@helia/ipns 9.2.1-eb1908b3 → 9.2.1-ed6c3b79
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/README.md +21 -57
- package/dist/index.min.js +5 -16
- package/dist/index.min.js.map +4 -4
- package/dist/src/errors.d.ts +33 -5
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +33 -20
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +62 -99
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +21 -60
- package/dist/src/index.js.map +1 -1
- package/dist/src/ipns/publisher.d.ts +5 -9
- package/dist/src/ipns/publisher.d.ts.map +1 -1
- package/dist/src/ipns/publisher.js +30 -22
- package/dist/src/ipns/publisher.js.map +1 -1
- package/dist/src/ipns/republisher.d.ts +3 -5
- package/dist/src/ipns/republisher.d.ts.map +1 -1
- package/dist/src/ipns/republisher.js +18 -9
- package/dist/src/ipns/republisher.js.map +1 -1
- package/dist/src/ipns/resolver.d.ts +6 -5
- package/dist/src/ipns/resolver.d.ts.map +1 -1
- package/dist/src/ipns/resolver.js +32 -78
- package/dist/src/ipns/resolver.js.map +1 -1
- package/dist/src/ipns.d.ts +6 -4
- package/dist/src/ipns.d.ts.map +1 -1
- package/dist/src/ipns.js +33 -4
- package/dist/src/ipns.js.map +1 -1
- package/dist/src/pb/ipns.d.ts +62 -0
- package/dist/src/pb/ipns.d.ts.map +1 -0
- package/dist/src/pb/ipns.js +203 -0
- package/dist/src/pb/ipns.js.map +1 -0
- package/dist/src/pb/metadata.d.ts +1 -1
- package/dist/src/pb/metadata.d.ts.map +1 -1
- package/dist/src/records.d.ts +155 -0
- package/dist/src/records.d.ts.map +1 -0
- package/dist/src/records.js +88 -0
- package/dist/src/records.js.map +1 -0
- package/dist/src/routing/pubsub.d.ts +3 -0
- package/dist/src/routing/pubsub.d.ts.map +1 -1
- package/dist/src/routing/pubsub.js +15 -10
- package/dist/src/routing/pubsub.js.map +1 -1
- package/dist/src/selector.d.ts +14 -0
- package/dist/src/selector.d.ts.map +1 -0
- package/dist/src/selector.js +47 -0
- package/dist/src/selector.js.map +1 -0
- package/dist/src/utils.d.ts +29 -2
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +308 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/validator.d.ts +18 -0
- package/dist/src/validator.d.ts.map +1 -0
- package/dist/src/validator.js +58 -0
- package/dist/src/validator.js.map +1 -0
- package/package.json +24 -23
- package/src/errors.ts +40 -25
- package/src/index.ts +63 -100
- package/src/ipns/publisher.ts +34 -29
- package/src/ipns/republisher.ts +24 -13
- package/src/ipns/resolver.ts +40 -88
- package/src/ipns.ts +44 -7
- package/src/pb/ipns.proto +39 -0
- package/src/pb/ipns.ts +280 -0
- package/src/pb/metadata.ts +1 -1
- package/src/records.ts +273 -0
- package/src/routing/pubsub.ts +17 -10
- package/src/selector.ts +55 -0
- package/src/utils.ts +371 -2
- package/src/validator.ts +67 -0
|
@@ -4,9 +4,6 @@ import { PeerSet } from '@libp2p/peer-collections';
|
|
|
4
4
|
import { Queue } from '@libp2p/utils';
|
|
5
5
|
import { anySignal } from 'any-signal';
|
|
6
6
|
import delay from 'delay';
|
|
7
|
-
import { multihashToIPNSRoutingKey } from 'ipns';
|
|
8
|
-
import { ipnsSelector } from 'ipns/selector';
|
|
9
|
-
import { ipnsValidator } from 'ipns/validator';
|
|
10
7
|
import { CustomProgressEvent } from 'progress-events';
|
|
11
8
|
import { raceSignal } from 'race-signal';
|
|
12
9
|
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
@@ -14,7 +11,10 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
|
14
11
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
15
12
|
import { InvalidTopicError } from "../errors.js";
|
|
16
13
|
import { localStore } from "../local-store.js";
|
|
17
|
-
import {
|
|
14
|
+
import { multihashToIPNSRoutingKey } from "../records.js";
|
|
15
|
+
import { ipnsSelector } from "../selector.js";
|
|
16
|
+
import { IPNS_STRING_PREFIX, unmarshalIPNSRecord } from "../utils.js";
|
|
17
|
+
import { ipnsValidator } from "../validator.js";
|
|
18
18
|
const log = logger('helia:ipns:routing:pubsub');
|
|
19
19
|
export class PubSubRouting {
|
|
20
20
|
subscriptions;
|
|
@@ -27,6 +27,7 @@ export class PubSubRouting {
|
|
|
27
27
|
fetchPeers;
|
|
28
28
|
shutdownController;
|
|
29
29
|
fetchTopologyId;
|
|
30
|
+
keychain;
|
|
30
31
|
constructor(components, init = {}) {
|
|
31
32
|
this.subscriptions = new Set();
|
|
32
33
|
this.shutdownController = new AbortController();
|
|
@@ -36,6 +37,7 @@ export class PubSubRouting {
|
|
|
36
37
|
this.libp2p = components.libp2p;
|
|
37
38
|
this.fetchConcurrency = init.fetchConcurrency ?? 8;
|
|
38
39
|
this.fetchDelay = init.fetchDelay ?? 0;
|
|
40
|
+
this.keychain = components.keychain;
|
|
39
41
|
// default libp2p-fetch timeout is 10 seconds - we should have an existing
|
|
40
42
|
// connection to the peer so this can be shortened
|
|
41
43
|
this.fetchTimeout = init.fetchTimeout ?? 2_500;
|
|
@@ -138,19 +140,21 @@ export class PubSubRouting {
|
|
|
138
140
|
return this.#handleRecord(topic, routingKey, marshalledRecord, true, options);
|
|
139
141
|
}
|
|
140
142
|
async #handleRecord(topic, routingKey, marshalledRecord, publish, options) {
|
|
141
|
-
await
|
|
143
|
+
const record = await unmarshalIPNSRecord(routingKey, marshalledRecord, this.keychain, options);
|
|
144
|
+
await ipnsValidator(record, options);
|
|
142
145
|
this.shutdownController.signal.throwIfAborted();
|
|
143
146
|
if (await this.localStore.has(routingKey)) {
|
|
144
|
-
const { record:
|
|
145
|
-
|
|
147
|
+
const { record: marshaledCurrentRecord } = await this.localStore.get(routingKey, options);
|
|
148
|
+
const currentRecord = await unmarshalIPNSRecord(routingKey, marshaledCurrentRecord, this.keychain, options);
|
|
149
|
+
if (uint8ArrayEquals(marshaledCurrentRecord, record.bytes)) {
|
|
146
150
|
log.trace('found identical record for %m', routingKey);
|
|
147
|
-
return currentRecord;
|
|
151
|
+
return currentRecord.bytes;
|
|
148
152
|
}
|
|
149
|
-
const records = [currentRecord,
|
|
153
|
+
const records = [currentRecord, record];
|
|
150
154
|
const index = ipnsSelector(routingKey, records);
|
|
151
155
|
if (index === 0) {
|
|
152
156
|
log.trace('found old record for %m', routingKey);
|
|
153
|
-
return currentRecord;
|
|
157
|
+
return currentRecord.bytes;
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
log('found new record for %m', routingKey);
|
|
@@ -244,6 +248,7 @@ export class PubSubRouting {
|
|
|
244
248
|
*/
|
|
245
249
|
cancel(key) {
|
|
246
250
|
const digest = isPublicKey(key) ? key.toMultihash() : key;
|
|
251
|
+
// @ ts-expect-error @libp2p/crypto needs new multiformats
|
|
247
252
|
const routingKey = multihashToIPNSRoutingKey(digest);
|
|
248
253
|
const topic = keyToTopic(routingKey);
|
|
249
254
|
// Not found topic
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../../src/routing/pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,MAAM,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAShD,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAA;AAuE/C,MAAM,OAAO,aAAa;IACP,aAAa,CAAa;IAC1B,UAAU,CAAY;IACtB,MAAM,CAAoG;IAC1G,gBAAgB,CAAQ;IACxB,YAAY,CAAQ;IACpB,UAAU,CAAQ;IAClB,UAAU,CAA+B;IACzC,UAAU,CAAS;IAC5B,kBAAkB,CAAiB;IACnC,eAAe,CAAS;IAEhC,YAAa,UAAmC,EAAE,OAA0B,EAAE;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;QAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAA;QAC/C,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAA;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAC5G,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QAEtC,0EAA0E;QAC1E,kDAAkD;QAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAA;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAyB;YAClD,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,UAAU,EAAE,+BAA+B;SAC5C,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAA;YAE1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,OAAM;YACR,CAAC;YAED,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;gBAClC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM;aACvC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACb,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,iCAAiC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC1E,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;oBAE5C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;wBACjC,OAAM;oBACR,CAAC;oBAED,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;wBAChC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;4BACvC,SAAQ;wBACV,CAAC;wBAED,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;4BAC5B,SAAQ;wBACV,CAAC;wBAED,GAAG,CAAC,yBAAyB,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;wBAEjD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;wBACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;4BACjD,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM;yBACvC,CAAC;6BACC,KAAK,CAAC,GAAG,CAAC,EAAE;4BACX,GAAG,CAAC,KAAK,CAAC,sDAAsD,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;wBAC5F,CAAC,CAAC,CAAA;oBACN,CAAC;gBACH,CAAC,CAAC,CAAA;gBAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;oBAClF,IAAI,CAAC;wBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;4BAChD,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM;yBACvC,CAAC,CAAA;wBAEF,OAAO,MAAM,CAAA;oBACf,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAClB,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;4BACjC,MAAM,GAAG,CAAA;wBACX,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAA;gBACF,GAAG,CAAC,+DAA+D,CAAC,CAAA;YACtE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,4EAA4E,EAAE,CAAC,CAAC,CAAA;YACtF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,mFAAmF,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAE,OAAgB,EAAE,OAAsB;QACnE,GAAG,CAAC,4BAA4B,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAA;YACtF,OAAM;QACR,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,8BAA8B,CAAC,CAAA;YACnC,OAAM;QACR,CAAC;QAED,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAClG,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,KAAa,EAAE,UAAsB,EAAE,MAAc,EAAE,OAAsB;QACjG,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACtE,GAAG,CAAC,0CAA0C,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;YAEnE,MAAM,GAAG,GAAG,SAAS,CAAC;gBACpB,MAAM;gBACN,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;aACvC,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE;oBACjE,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAA;YACJ,CAAC;oBAAS,CAAC;gBACT,GAAG,CAAC,KAAK,EAAE,CAAA;YACb,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,CAAA;QAEX,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,aAAa,CAAC,QAAQ,MAAM,wCAAwC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC3H,CAAC;QAED,GAAG,CAAC,yCAAyC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;QAClE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAC/E,CAAC;IAED,KAAK,CAAC,aAAa,CAAE,KAAa,EAAE,UAAsB,EAAE,gBAA4B,EAAE,OAAgB,EAAE,OAAsB;QAChI,MAAM,aAAa,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;QACjD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAE/C,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAEhF,IAAI,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAA;gBACtD,OAAO,aAAa,CAAA;YACtB,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAE/C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAA;gBAChD,OAAO,aAAa,CAAA;YACtB,CAAC;QACH,CAAC;QAED,GAAG,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAA;QAC1C,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;QAEhE,qDAAqD;QACrD,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;YAExC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;gBACjF,GAAG,CAAC,+CAA+C,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YAChF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,eAA2B,EAAE,UAAsB,EAAE;QACtF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;YAEpC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;YACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;YAChF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;YAEjC,GAAG,CAAC,+CAA+C,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YAC9E,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QACzF,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAA;YAC9E,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAE,UAAsB,EAAE,UAAsB,EAAE;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;QAEpC,IAAI,CAAC;YACH,oCAAoC;YACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;gBACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAE7B,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YACnF,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAQ,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAA;YAC9E,MAAM,GAAG,CAAA;QACX,CAAC;QAED,gDAAgD;QAChD,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAExE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC7C,MAAM,QAAQ,GAA+B,EAAE,CAAA;QAE/C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,SAAS,CAAC;gBACvB,OAAO,EAAE,MAAM;gBACf,eAAe,CAAC,MAAM;aACvB,CAAC,CAAA;YAEF,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;gBAC7C,GAAG,OAAO;gBACV,MAAM;aACP,CAAC;iBACC,OAAO,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,KAAK,EAAE,CAAA;YAChB,CAAC,CAAC,CACL,CAAA;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,gCAAgC;YAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAE1C,gCAAgC;YAChC,eAAe,CAAC,KAAK,EAAE,CAAA;YAEvB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;QAED,MAAM,IAAI,aAAa,CAAC,8CAA8C,CAAC,CAAA;IACzE,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAE,GAA6C;QACnD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;QAEpC,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,QAAQ;QACN,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAA;QAC/C,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAEzD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACrF,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;oBACpB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC7B,CAAC;gBACD,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;oBACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAChC,CAAC;aACF,EAAE;gBACD,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM;aACvC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;QAE/B,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAEnC;;GAEG;AACH,SAAS,UAAU,CAAE,GAAe;IAClC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAEnD,OAAO,GAAG,gBAAgB,GAAG,MAAM,EAAE,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAE,KAAa;IAChC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACrE,MAAM,IAAI,iBAAiB,CAAC,qCAAqC,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAEpD,OAAO,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAE,UAAmC,EAAE,OAA0B,EAAE;IACvF,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../../src/routing/pubsub.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IPNSRecord } from './records.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Selects the latest valid IPNS record from an array of marshalled IPNS records.
|
|
4
|
+
*
|
|
5
|
+
* Records are sorted by:
|
|
6
|
+
* 1. Sequence number (higher takes precedence)
|
|
7
|
+
* 2. Validity time for EOL records with same sequence number (longer lived record takes precedence)
|
|
8
|
+
*
|
|
9
|
+
* @param key - The routing key for the IPNS record
|
|
10
|
+
* @param data - Array of marshalled IPNS records to select from
|
|
11
|
+
* @returns The index of the most valid record from the input array
|
|
12
|
+
*/
|
|
13
|
+
export declare function ipnsSelector(key: Uint8Array, data: IPNSRecord[]): number;
|
|
14
|
+
//# sourceMappingURL=selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAuCzE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import NanoDate from 'timestamp-nano';
|
|
2
|
+
import { IpnsEntry } from "./pb/ipns.js";
|
|
3
|
+
/**
|
|
4
|
+
* Selects the latest valid IPNS record from an array of marshalled IPNS records.
|
|
5
|
+
*
|
|
6
|
+
* Records are sorted by:
|
|
7
|
+
* 1. Sequence number (higher takes precedence)
|
|
8
|
+
* 2. Validity time for EOL records with same sequence number (longer lived record takes precedence)
|
|
9
|
+
*
|
|
10
|
+
* @param key - The routing key for the IPNS record
|
|
11
|
+
* @param data - Array of marshalled IPNS records to select from
|
|
12
|
+
* @returns The index of the most valid record from the input array
|
|
13
|
+
*/
|
|
14
|
+
export function ipnsSelector(key, data) {
|
|
15
|
+
const entries = data.map((record, index) => ({
|
|
16
|
+
record,
|
|
17
|
+
index
|
|
18
|
+
}));
|
|
19
|
+
entries.sort((a, b) => {
|
|
20
|
+
// Before we'd sort based on the signature version. Unmarshal now fails if
|
|
21
|
+
// a record does not have SignatureV2, so that is no longer needed. V1-only
|
|
22
|
+
// records haven't been issues in a long time.
|
|
23
|
+
const aSeq = a.record.sequence;
|
|
24
|
+
const bSeq = b.record.sequence;
|
|
25
|
+
// choose later sequence number
|
|
26
|
+
if (aSeq > bSeq) {
|
|
27
|
+
return -1;
|
|
28
|
+
}
|
|
29
|
+
else if (aSeq < bSeq) {
|
|
30
|
+
return 1;
|
|
31
|
+
}
|
|
32
|
+
if (a.record.validityType === IpnsEntry.ValidityType.EOL && b.record.validityType === IpnsEntry.ValidityType.EOL) {
|
|
33
|
+
// choose longer lived record if sequence numbers the same
|
|
34
|
+
const recordAValidityDate = NanoDate.fromString(a.record.validity).toDate();
|
|
35
|
+
const recordBValidityDate = NanoDate.fromString(b.record.validity).toDate();
|
|
36
|
+
if (recordAValidityDate.getTime() > recordBValidityDate.getTime()) {
|
|
37
|
+
return -1;
|
|
38
|
+
}
|
|
39
|
+
if (recordAValidityDate.getTime() < recordBValidityDate.getTime()) {
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return 0;
|
|
44
|
+
});
|
|
45
|
+
return entries[0].index;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAE,GAAe,EAAE,IAAkB;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM;QACN,KAAK;KACN,CAAC,CAAC,CAAA;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,0EAA0E;QAC1E,2EAA2E;QAC3E,8CAA8C;QAE9C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAA;QAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAA;QAE9B,+BAA+B;QAC/B,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;aAAM,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,CAAA;QACV,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YACjH,0DAA0D;YAC1D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;YAC3E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;YAE3E,IAAI,mBAAmB,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClE,OAAO,CAAC,CAAC,CAAA;YACX,CAAC;YAED,IAAI,mBAAmB,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClE,OAAO,CAAC,CAAA;YACV,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AACzB,CAAC"}
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Key } from 'interface-datastore';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import { CID } from 'multiformats/cid';
|
|
3
|
+
import { IpnsEntry } from './pb/ipns.ts';
|
|
4
|
+
import type { IPNSRecord, IPNSRecordV2, IPNSRecordData } from './records.ts';
|
|
5
|
+
import type { PublicKey, Keychain } from '@helia/interface';
|
|
6
|
+
import type { AbortOptions } from '@libp2p/interface';
|
|
4
7
|
import type { MultihashDigest } from 'multiformats/hashes/interface';
|
|
5
8
|
export declare const LIBP2P_KEY_CODEC = 114;
|
|
6
9
|
export declare const IDENTITY_CODEC = 0;
|
|
@@ -27,4 +30,28 @@ export declare function dhtRoutingKey(key: Uint8Array): Key;
|
|
|
27
30
|
export declare function ipnsMetadataKey(key: Uint8Array): Key;
|
|
28
31
|
export declare function shouldRepublish(ipnsRecord: IPNSRecord, created: Date): boolean;
|
|
29
32
|
export declare function isLibp2pCID(obj?: any): obj is CID<unknown, 0x72, 0x00 | 0x12, 1>;
|
|
33
|
+
/**
|
|
34
|
+
* Utility for creating the record data for being signed
|
|
35
|
+
*/
|
|
36
|
+
export declare function ipnsRecordDataForV1Sig(value: string, validityType: IpnsEntry.ValidityType, validity: Uint8Array): Uint8Array;
|
|
37
|
+
/**
|
|
38
|
+
* Utility for creating the record data for being signed
|
|
39
|
+
*/
|
|
40
|
+
export declare function ipnsRecordDataForV2Sig(data: Uint8Array): Uint8Array;
|
|
41
|
+
export declare function marshalIPNSRecord(obj: IPNSRecord | IPNSRecordV2): Uint8Array;
|
|
42
|
+
export declare function unmarshalIPNSRecord(routingKey: Uint8Array, marshalledRecord: Uint8Array, keychain: Keychain, options?: AbortOptions): Promise<IPNSRecord>;
|
|
43
|
+
export declare function multihashToIPNSRoutingKey(digest: MultihashDigest): Uint8Array;
|
|
44
|
+
export declare function multihashFromIPNSRoutingKey(key: Uint8Array): MultihashDigest;
|
|
45
|
+
export declare function createCborData(value: string, validityType: IpnsEntry.ValidityType, validity: Uint8Array, sequence: bigint, ttl: bigint): Uint8Array;
|
|
46
|
+
export declare function parseCborData(buf: Uint8Array): IPNSRecordData;
|
|
47
|
+
/**
|
|
48
|
+
* Normalizes the given record value. It ensures it is a PeerID, a CID or a
|
|
49
|
+
* string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,
|
|
50
|
+
* CIDs become `/ipfs/${cidAsV1}`.
|
|
51
|
+
*/
|
|
52
|
+
export declare function normalizeValue(value?: PublicKey | CID | MultihashDigest | string): string;
|
|
53
|
+
export declare function normalizeKey(key?: PublicKey | CID<unknown, 0x72> | MultihashDigest | string): {
|
|
54
|
+
digest: MultihashDigest;
|
|
55
|
+
path: string;
|
|
56
|
+
};
|
|
30
57
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAQtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,eAAO,MAAM,gBAAgB,MAAO,CAAA;AACpC,eAAO,MAAM,cAAc,IAAM,CAAA;AACjC,eAAO,MAAM,cAAc,KAAO,CAAA;AAQlC,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAE1C,wBAAgB,OAAO,CAAE,CAAC,SAAS,MAAM,EAAG,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAE3G;AAED,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAC/C,eAAO,MAAM,oBAAoB,oBAAoB,CAAA;AAErD,wBAAgB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAEnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAErD;AAED,wBAAgB,eAAe,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAgB/E;AAMD,wBAAgB,WAAW,CAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAcjF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,CAS7H;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAIpE;AAED,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,UAAU,GAAG,YAAY,GAAG,UAAU,CA4B7E;AAcD,wBAAsB,mBAAmB,CAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAoEhK;AAED,wBAAgB,yBAAyB,CAAE,MAAM,EAAE,eAAe,GAAG,UAAU,CAK9E;AAED,wBAAgB,2BAA2B,CAAE,GAAG,EAAE,UAAU,GAAG,eAAe,CAE7E;AAED,wBAAgB,cAAc,CAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAkBpJ;AAED,wBAAgB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,CAoB9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAE,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,CAsC1F;AAMD,wBAAgB,YAAY,CAAE,GAAG,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,eAAe,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA4DxI"}
|
package/dist/src/utils.js
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
|
+
import { isPublicKey } from '@helia/interface';
|
|
1
2
|
import { InvalidParametersError } from '@libp2p/interface';
|
|
3
|
+
import * as cborg from 'cborg';
|
|
2
4
|
import { Key } from 'interface-datastore';
|
|
5
|
+
import { base36 } from 'multiformats/bases/base36';
|
|
6
|
+
import { base58btc } from 'multiformats/bases/base58';
|
|
7
|
+
import { CID } from 'multiformats/cid';
|
|
8
|
+
import * as Digest from 'multiformats/hashes/digest';
|
|
9
|
+
import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
|
|
10
|
+
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
11
|
+
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
3
12
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
4
13
|
import { DHT_EXPIRY_MS, REPUBLISH_THRESHOLD } from "./constants.js";
|
|
14
|
+
import { InvalidEmbeddedPublicKeyError, InvalidRecordDataError, InvalidValueError, RecordTooLargeError, SignatureVerificationError, UnsupportedValidityError } from "./errors.js";
|
|
15
|
+
import { IpnsEntry } from "./pb/ipns.js";
|
|
5
16
|
export const LIBP2P_KEY_CODEC = 0x72;
|
|
6
17
|
export const IDENTITY_CODEC = 0x0;
|
|
7
18
|
export const SHA2_256_CODEC = 0x12;
|
|
19
|
+
/**
|
|
20
|
+
* Limit valid IPNS record sizes to 10kb
|
|
21
|
+
*/
|
|
22
|
+
const MAX_RECORD_SIZE = 1024 * 10;
|
|
23
|
+
const IPNS_PREFIX = uint8ArrayFromString('/ipns/');
|
|
8
24
|
export const IPNS_STRING_PREFIX = '/ipns/';
|
|
9
25
|
export function isCodec(digest, codec) {
|
|
10
26
|
return digest.code === codec;
|
|
@@ -60,4 +76,296 @@ export function isLibp2pCID(obj) {
|
|
|
60
76
|
}
|
|
61
77
|
return true;
|
|
62
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Utility for creating the record data for being signed
|
|
81
|
+
*/
|
|
82
|
+
export function ipnsRecordDataForV1Sig(value, validityType, validity) {
|
|
83
|
+
const validityTypeBuffer = uint8ArrayFromString(validityType);
|
|
84
|
+
const valueBytes = uint8ArrayFromString(value);
|
|
85
|
+
return uint8ArrayConcat([
|
|
86
|
+
valueBytes,
|
|
87
|
+
validity,
|
|
88
|
+
validityTypeBuffer
|
|
89
|
+
], valueBytes.byteLength + validity.byteLength + validityTypeBuffer.byteLength);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Utility for creating the record data for being signed
|
|
93
|
+
*/
|
|
94
|
+
export function ipnsRecordDataForV2Sig(data) {
|
|
95
|
+
const entryData = uint8ArrayFromString('ipns-signature:');
|
|
96
|
+
return uint8ArrayConcat([entryData, data]);
|
|
97
|
+
}
|
|
98
|
+
export function marshalIPNSRecord(obj) {
|
|
99
|
+
let publicKey = obj.publicKey?.toProtobuf();
|
|
100
|
+
// do not embed public keys whose multihash is an identity hash as these can
|
|
101
|
+
// be derived from the routing key
|
|
102
|
+
if (obj.publicKey?.toMultihash().code === 0x00) {
|
|
103
|
+
publicKey = undefined;
|
|
104
|
+
}
|
|
105
|
+
if ('signatureV1' in obj) {
|
|
106
|
+
return IpnsEntry.encode({
|
|
107
|
+
value: uint8ArrayFromString(obj.value),
|
|
108
|
+
signatureV1: obj.signatureV1,
|
|
109
|
+
validityType: obj.validityType,
|
|
110
|
+
validity: uint8ArrayFromString(obj.validity),
|
|
111
|
+
sequence: obj.sequence,
|
|
112
|
+
ttl: obj.ttl,
|
|
113
|
+
publicKey,
|
|
114
|
+
signatureV2: obj.signatureV2,
|
|
115
|
+
data: obj.data
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return IpnsEntry.encode({
|
|
120
|
+
publicKey,
|
|
121
|
+
signatureV2: obj.signatureV2,
|
|
122
|
+
data: obj.data
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function valueToString(value) {
|
|
127
|
+
// handle legacy case where record value is raw CID bytes
|
|
128
|
+
try {
|
|
129
|
+
const cid = CID.decode(value);
|
|
130
|
+
return `/ipfs/${cid}`;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// ignore error
|
|
134
|
+
}
|
|
135
|
+
return uint8ArrayToString(value);
|
|
136
|
+
}
|
|
137
|
+
export async function unmarshalIPNSRecord(routingKey, marshalledRecord, keychain, options) {
|
|
138
|
+
if (marshalledRecord.byteLength > MAX_RECORD_SIZE) {
|
|
139
|
+
throw new RecordTooLargeError('The record is too large');
|
|
140
|
+
}
|
|
141
|
+
const message = IpnsEntry.decode(marshalledRecord);
|
|
142
|
+
// Check if we have the data field. If we don't, we fail. We've been producing
|
|
143
|
+
// V1+V2 records for quite a while and we don't support V1-only records during
|
|
144
|
+
// validation any more
|
|
145
|
+
if (message.signatureV2 == null || message.data == null) {
|
|
146
|
+
throw new SignatureVerificationError('Missing data or signatureV2');
|
|
147
|
+
}
|
|
148
|
+
const data = parseCborData(message.data);
|
|
149
|
+
const validity = uint8ArrayToString(data.Validity);
|
|
150
|
+
let publicKey;
|
|
151
|
+
// try to extract public key from routing key
|
|
152
|
+
const routingMultihash = multihashFromIPNSRoutingKey(routingKey);
|
|
153
|
+
// identity hash
|
|
154
|
+
if (isCodec(routingMultihash, 0x0)) {
|
|
155
|
+
publicKey = await keychain.loadPublicKeyFromProtobuf(routingMultihash.digest, options);
|
|
156
|
+
}
|
|
157
|
+
// otherwise try to load key from message
|
|
158
|
+
if (publicKey == null && message.publicKey != null) {
|
|
159
|
+
publicKey = await keychain.loadPublicKeyFromProtobuf(message.publicKey, options);
|
|
160
|
+
}
|
|
161
|
+
if (publicKey == null) {
|
|
162
|
+
throw new InvalidEmbeddedPublicKeyError('Could not extract public key from IPNS record or routing key');
|
|
163
|
+
}
|
|
164
|
+
if (message.value != null && message.signatureV1 != null) {
|
|
165
|
+
// V1+V2
|
|
166
|
+
validateCborDataMatchesPbData(message);
|
|
167
|
+
return {
|
|
168
|
+
value: valueToString(data.Value),
|
|
169
|
+
validityType: IpnsEntry.ValidityType.EOL,
|
|
170
|
+
validity,
|
|
171
|
+
sequence: data.Sequence,
|
|
172
|
+
ttl: data.TTL,
|
|
173
|
+
publicKey,
|
|
174
|
+
signatureV1: message.signatureV1,
|
|
175
|
+
signatureV2: message.signatureV2,
|
|
176
|
+
data: message.data,
|
|
177
|
+
bytes: marshalledRecord
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
else if (message.signatureV2 != null) {
|
|
181
|
+
// V2-only
|
|
182
|
+
return {
|
|
183
|
+
value: valueToString(data.Value),
|
|
184
|
+
validityType: IpnsEntry.ValidityType.EOL,
|
|
185
|
+
validity,
|
|
186
|
+
sequence: data.Sequence,
|
|
187
|
+
ttl: data.TTL,
|
|
188
|
+
publicKey,
|
|
189
|
+
signatureV2: message.signatureV2,
|
|
190
|
+
data: message.data,
|
|
191
|
+
bytes: marshalledRecord
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
throw new Error('invalid record: does not include signatureV1 or signatureV2');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
export function multihashToIPNSRoutingKey(digest) {
|
|
199
|
+
return uint8ArrayConcat([
|
|
200
|
+
IPNS_PREFIX,
|
|
201
|
+
digest.bytes
|
|
202
|
+
]);
|
|
203
|
+
}
|
|
204
|
+
export function multihashFromIPNSRoutingKey(key) {
|
|
205
|
+
return Digest.decode(key.slice(IPNS_PREFIX.length));
|
|
206
|
+
}
|
|
207
|
+
export function createCborData(value, validityType, validity, sequence, ttl) {
|
|
208
|
+
let ValidityType;
|
|
209
|
+
if (validityType === IpnsEntry.ValidityType.EOL) {
|
|
210
|
+
ValidityType = 0;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
throw new UnsupportedValidityError('The validity type is unsupported');
|
|
214
|
+
}
|
|
215
|
+
const data = {
|
|
216
|
+
Value: uint8ArrayFromString(value),
|
|
217
|
+
Validity: validity,
|
|
218
|
+
ValidityType,
|
|
219
|
+
Sequence: sequence,
|
|
220
|
+
TTL: ttl
|
|
221
|
+
};
|
|
222
|
+
return cborg.encode(data);
|
|
223
|
+
}
|
|
224
|
+
export function parseCborData(buf) {
|
|
225
|
+
const data = cborg.decode(buf);
|
|
226
|
+
if (data.ValidityType === 0) {
|
|
227
|
+
data.ValidityType = IpnsEntry.ValidityType.EOL;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
throw new UnsupportedValidityError('The validity type is unsupported');
|
|
231
|
+
}
|
|
232
|
+
if (Number.isInteger(data.Sequence)) {
|
|
233
|
+
// sequence must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range
|
|
234
|
+
data.Sequence = BigInt(data.Sequence);
|
|
235
|
+
}
|
|
236
|
+
if (Number.isInteger(data.TTL)) {
|
|
237
|
+
// ttl must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range
|
|
238
|
+
data.TTL = BigInt(data.TTL);
|
|
239
|
+
}
|
|
240
|
+
return data;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Normalizes the given record value. It ensures it is a PeerID, a CID or a
|
|
244
|
+
* string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,
|
|
245
|
+
* CIDs become `/ipfs/${cidAsV1}`.
|
|
246
|
+
*/
|
|
247
|
+
export function normalizeValue(value) {
|
|
248
|
+
if (value != null) {
|
|
249
|
+
if (isPublicKey(value)) {
|
|
250
|
+
return `/ipns/${value.toCID().toV1().toString(base36)}`;
|
|
251
|
+
}
|
|
252
|
+
const cid = asCID(value);
|
|
253
|
+
// if we have a CID, turn it into an ipfs path
|
|
254
|
+
if (cid != null) {
|
|
255
|
+
// PeerID encoded as a CID
|
|
256
|
+
if (cid.code === LIBP2P_KEY_CODEC) {
|
|
257
|
+
return `/ipns/${cid.toV1().toString(base36)}`;
|
|
258
|
+
}
|
|
259
|
+
return `/ipfs/${cid.toV1()}`;
|
|
260
|
+
}
|
|
261
|
+
if (hasBytes(value)) {
|
|
262
|
+
return `/ipns/${base36.encode(value.bytes)}`;
|
|
263
|
+
}
|
|
264
|
+
// if we have a path, check it is a valid path
|
|
265
|
+
const string = value.toString().trim();
|
|
266
|
+
if (string.startsWith('/ipfs/')) {
|
|
267
|
+
const [, name, ...rest] = string.split('/')
|
|
268
|
+
.filter(component => component.trim() !== '');
|
|
269
|
+
return `/ipfs/${CID.parse(name).toV1()}${rest.length > 0 ? `/${rest.join('/')}` : ''}`;
|
|
270
|
+
}
|
|
271
|
+
if (string.startsWith('/') && string.length > 1) {
|
|
272
|
+
return string;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
throw new InvalidValueError('Value must be a valid content path starting with /');
|
|
276
|
+
}
|
|
277
|
+
function isMultihashDigest(obj) {
|
|
278
|
+
return typeof obj.code === 'number' && obj.digest instanceof Uint8Array && typeof obj.size === 'number' && obj.bytes instanceof Uint8Array;
|
|
279
|
+
}
|
|
280
|
+
export function normalizeKey(key) {
|
|
281
|
+
if (key != null) {
|
|
282
|
+
if (isPublicKey(key)) {
|
|
283
|
+
return {
|
|
284
|
+
digest: key.toMultihash(),
|
|
285
|
+
path: '/'
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
const cid = asCID(key);
|
|
289
|
+
// if we have a CID, turn it into an ipfs path
|
|
290
|
+
if (cid != null) {
|
|
291
|
+
// PeerID encoded as a CID
|
|
292
|
+
if (cid.code !== LIBP2P_KEY_CODEC) {
|
|
293
|
+
throw new InvalidValueError('CIDs must have the `libp2p-key` codec');
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
digest: cid.multihash,
|
|
297
|
+
path: '/'
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
if (isMultihashDigest(key)) {
|
|
301
|
+
return {
|
|
302
|
+
digest: key,
|
|
303
|
+
path: '/'
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
key = key.toString();
|
|
307
|
+
if (key.startsWith('/ipns/')) {
|
|
308
|
+
let [, , name, ...rest] = key.split('/');
|
|
309
|
+
let codec = base36;
|
|
310
|
+
// base58btc encoded public key hash or protobuf in identity hash
|
|
311
|
+
if (name.startsWith('1') || name.startsWith('Q')) {
|
|
312
|
+
name = `z${name}`;
|
|
313
|
+
codec = base58btc;
|
|
314
|
+
}
|
|
315
|
+
const buf = codec.decode(name);
|
|
316
|
+
let digest;
|
|
317
|
+
try {
|
|
318
|
+
digest = CID.decode(buf).multihash;
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
digest = Digest.decode(buf);
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
digest,
|
|
325
|
+
path: `/${rest.join('/')}`
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
throw new InvalidValueError('Value must be a valid IPNS path starting with /');
|
|
330
|
+
}
|
|
331
|
+
function validateCborDataMatchesPbData(entry) {
|
|
332
|
+
if (entry.data == null) {
|
|
333
|
+
throw new InvalidRecordDataError('Record data is missing');
|
|
334
|
+
}
|
|
335
|
+
const data = parseCborData(entry.data);
|
|
336
|
+
if (!uint8ArrayEquals(data.Value, entry.value ?? new Uint8Array(0))) {
|
|
337
|
+
throw new SignatureVerificationError('Field "value" did not match between protobuf and CBOR');
|
|
338
|
+
}
|
|
339
|
+
if (!uint8ArrayEquals(data.Validity, entry.validity ?? new Uint8Array(0))) {
|
|
340
|
+
throw new SignatureVerificationError('Field "validity" did not match between protobuf and CBOR');
|
|
341
|
+
}
|
|
342
|
+
if (data.ValidityType !== entry.validityType) {
|
|
343
|
+
throw new SignatureVerificationError('Field "validityType" did not match between protobuf and CBOR');
|
|
344
|
+
}
|
|
345
|
+
if (data.Sequence !== entry.sequence) {
|
|
346
|
+
throw new SignatureVerificationError('Field "sequence" did not match between protobuf and CBOR');
|
|
347
|
+
}
|
|
348
|
+
if (data.TTL !== entry.ttl) {
|
|
349
|
+
throw new SignatureVerificationError('Field "ttl" did not match between protobuf and CBOR');
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
function hasBytes(obj) {
|
|
353
|
+
return obj.bytes instanceof Uint8Array;
|
|
354
|
+
}
|
|
355
|
+
function hasToCID(obj) {
|
|
356
|
+
return typeof obj?.toCID === 'function';
|
|
357
|
+
}
|
|
358
|
+
function asCID(obj) {
|
|
359
|
+
if (hasToCID(obj)) {
|
|
360
|
+
return obj.toCID();
|
|
361
|
+
}
|
|
362
|
+
// try parsing as a CID string
|
|
363
|
+
try {
|
|
364
|
+
return CID.parse(obj);
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
// fall through
|
|
368
|
+
}
|
|
369
|
+
return CID.asCID(obj);
|
|
370
|
+
}
|
|
63
371
|
//# sourceMappingURL=utils.js.map
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAKnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAA;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAA;AAE1C,MAAM,UAAU,OAAO,CAAqB,MAAuB,EAAE,KAAQ;IAC3E,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAA;AAErD,MAAM,UAAU,aAAa,CAAE,GAAe;IAC5C,OAAO,IAAI,GAAG,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AAC9E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAE,GAAe;IAC9C,OAAO,IAAI,GAAG,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,eAAe,CAAE,UAAsB,EAAE,OAAa;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,aAAa,CAAA;IACnD,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;IAE5D,0DAA0D;IAC1D,IAAI,SAAS,GAAG,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0FAA0F;IAC1F,IAAI,YAAY,GAAG,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,KAAK,CAAE,GAAS;IACvB,OAAO,GAAG,EAAE,KAAK,KAAK,GAAG,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAE,GAAS;IACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAClC,MAAM,IAAI,sBAAsB,CAAC,aAAa,GAAG,CAAC,IAAI,qBAAqB,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnF,MAAM,IAAI,sBAAsB,CAAC,6BAA6B,GAAG,CAAC,SAAS,CAAC,IAAI,kCAAkC,CAAC,CAAA;IACrH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { IPNSRecord } from './index.ts';
|
|
2
|
+
import type { AbortOptions } from '@libp2p/interface';
|
|
3
|
+
/**
|
|
4
|
+
* Validate the given IPNS record against the given routing key.
|
|
5
|
+
*
|
|
6
|
+
* @see https://specs.ipfs.tech/ipns/ipns-record/#routing-record for the binary
|
|
7
|
+
* format of the routing key
|
|
8
|
+
*/
|
|
9
|
+
export declare function ipnsValidator(record: IPNSRecord, options?: AbortOptions): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the number of milliseconds until the record expires.
|
|
12
|
+
* If the record is already expired, returns 0.
|
|
13
|
+
*
|
|
14
|
+
* @param record - The IPNS record to validate.
|
|
15
|
+
* @returns The number of milliseconds until the record expires, or 0 if the record is already expired.
|
|
16
|
+
*/
|
|
17
|
+
export declare function validFor(record: IPNSRecord): number;
|
|
18
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B9F;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAiBpD"}
|