@helia/ipns 9.2.0 → 9.2.1-17530ed8

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 (69) hide show
  1. package/README.md +21 -57
  2. package/dist/index.min.js +9 -23
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/errors.d.ts +33 -5
  5. package/dist/src/errors.d.ts.map +1 -1
  6. package/dist/src/errors.js +33 -20
  7. package/dist/src/errors.js.map +1 -1
  8. package/dist/src/index.d.ts +62 -99
  9. package/dist/src/index.d.ts.map +1 -1
  10. package/dist/src/index.js +21 -60
  11. package/dist/src/index.js.map +1 -1
  12. package/dist/src/ipns/publisher.d.ts +5 -9
  13. package/dist/src/ipns/publisher.d.ts.map +1 -1
  14. package/dist/src/ipns/publisher.js +30 -22
  15. package/dist/src/ipns/publisher.js.map +1 -1
  16. package/dist/src/ipns/republisher.d.ts +3 -5
  17. package/dist/src/ipns/republisher.d.ts.map +1 -1
  18. package/dist/src/ipns/republisher.js +18 -9
  19. package/dist/src/ipns/republisher.js.map +1 -1
  20. package/dist/src/ipns/resolver.d.ts +6 -5
  21. package/dist/src/ipns/resolver.d.ts.map +1 -1
  22. package/dist/src/ipns/resolver.js +32 -78
  23. package/dist/src/ipns/resolver.js.map +1 -1
  24. package/dist/src/ipns.d.ts +6 -4
  25. package/dist/src/ipns.d.ts.map +1 -1
  26. package/dist/src/ipns.js +33 -4
  27. package/dist/src/ipns.js.map +1 -1
  28. package/dist/src/pb/ipns.d.ts +62 -0
  29. package/dist/src/pb/ipns.d.ts.map +1 -0
  30. package/dist/src/pb/ipns.js +203 -0
  31. package/dist/src/pb/ipns.js.map +1 -0
  32. package/dist/src/pb/metadata.d.ts +1 -1
  33. package/dist/src/pb/metadata.d.ts.map +1 -1
  34. package/dist/src/records.d.ts +155 -0
  35. package/dist/src/records.d.ts.map +1 -0
  36. package/dist/src/records.js +88 -0
  37. package/dist/src/records.js.map +1 -0
  38. package/dist/src/routing/pubsub.d.ts +3 -0
  39. package/dist/src/routing/pubsub.d.ts.map +1 -1
  40. package/dist/src/routing/pubsub.js +15 -10
  41. package/dist/src/routing/pubsub.js.map +1 -1
  42. package/dist/src/selector.d.ts +14 -0
  43. package/dist/src/selector.d.ts.map +1 -0
  44. package/dist/src/selector.js +47 -0
  45. package/dist/src/selector.js.map +1 -0
  46. package/dist/src/utils.d.ts +29 -2
  47. package/dist/src/utils.d.ts.map +1 -1
  48. package/dist/src/utils.js +308 -0
  49. package/dist/src/utils.js.map +1 -1
  50. package/dist/src/validator.d.ts +18 -0
  51. package/dist/src/validator.d.ts.map +1 -0
  52. package/dist/src/validator.js +58 -0
  53. package/dist/src/validator.js.map +1 -0
  54. package/package.json +32 -28
  55. package/src/errors.ts +40 -25
  56. package/src/index.ts +63 -100
  57. package/src/ipns/publisher.ts +34 -29
  58. package/src/ipns/republisher.ts +24 -13
  59. package/src/ipns/resolver.ts +40 -88
  60. package/src/ipns.ts +44 -7
  61. package/src/pb/ipns.proto +39 -0
  62. package/src/pb/ipns.ts +280 -0
  63. package/src/pb/metadata.ts +1 -1
  64. package/src/records.ts +273 -0
  65. package/src/routing/pubsub.ts +17 -10
  66. package/src/selector.ts +55 -0
  67. package/src/utils.ts +371 -2
  68. package/src/validator.ts +67 -0
  69. package/dist/typedoc-urls.json +0 -51
@@ -0,0 +1,62 @@
1
+ import type { Codec, DecodeOptions } from 'protons-runtime';
2
+ import type { Uint8ArrayList } from 'uint8arraylist';
3
+ export interface IpnsEntry {
4
+ value?: Uint8Array;
5
+ signatureV1?: Uint8Array;
6
+ validityType?: IpnsEntry.ValidityType;
7
+ validity?: Uint8Array;
8
+ sequence?: bigint;
9
+ ttl?: bigint;
10
+ publicKey?: Uint8Array;
11
+ signatureV2?: Uint8Array;
12
+ data?: Uint8Array;
13
+ }
14
+ export declare namespace IpnsEntry {
15
+ enum ValidityType {
16
+ EOL = "EOL"
17
+ }
18
+ namespace ValidityType {
19
+ const codec: () => Codec<ValidityType>;
20
+ }
21
+ const codec: () => Codec<IpnsEntry>;
22
+ interface IpnsEntryValueFieldEvent {
23
+ field: '$.value';
24
+ value: Uint8Array;
25
+ }
26
+ interface IpnsEntrySignatureV1FieldEvent {
27
+ field: '$.signatureV1';
28
+ value: Uint8Array;
29
+ }
30
+ interface IpnsEntryValidityTypeFieldEvent {
31
+ field: '$.validityType';
32
+ value: IpnsEntry.ValidityType;
33
+ }
34
+ interface IpnsEntryValidityFieldEvent {
35
+ field: '$.validity';
36
+ value: Uint8Array;
37
+ }
38
+ interface IpnsEntrySequenceFieldEvent {
39
+ field: '$.sequence';
40
+ value: bigint;
41
+ }
42
+ interface IpnsEntryTtlFieldEvent {
43
+ field: '$.ttl';
44
+ value: bigint;
45
+ }
46
+ interface IpnsEntryPublicKeyFieldEvent {
47
+ field: '$.publicKey';
48
+ value: Uint8Array;
49
+ }
50
+ interface IpnsEntrySignatureV2FieldEvent {
51
+ field: '$.signatureV2';
52
+ value: Uint8Array;
53
+ }
54
+ interface IpnsEntryDataFieldEvent {
55
+ field: '$.data';
56
+ value: Uint8Array;
57
+ }
58
+ function encode(obj: Partial<IpnsEntry>): Uint8Array<ArrayBuffer>;
59
+ function decode(buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<IpnsEntry>): IpnsEntry;
60
+ function stream(buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<IpnsEntry>): Generator<IpnsEntryValueFieldEvent | IpnsEntrySignatureV1FieldEvent | IpnsEntryValidityTypeFieldEvent | IpnsEntryValidityFieldEvent | IpnsEntrySequenceFieldEvent | IpnsEntryTtlFieldEvent | IpnsEntryPublicKeyFieldEvent | IpnsEntrySignatureV2FieldEvent | IpnsEntryDataFieldEvent>;
61
+ }
62
+ //# sourceMappingURL=ipns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipns.d.ts","sourceRoot":"","sources":["../../../src/pb/ipns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,CAAA;IACrC,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB;AAED,yBAAiB,SAAS,CAAC;IACzB,KAAY,YAAY;QACtB,GAAG,QAAQ;KACZ;IAMD,UAAiB,YAAY,CAAC;QACrB,MAAM,KAAK,QAAO,KAAK,CAAC,YAAY,CAE1C,CAAA;KACF;IAIM,MAAM,KAAK,QAAO,KAAK,CAAC,SAAS,CA4LvC,CAAA;IAED,UAAiB,wBAAwB;QACvC,KAAK,EAAE,SAAS,CAAA;QAChB,KAAK,EAAE,UAAU,CAAA;KAClB;IAED,UAAiB,8BAA8B;QAC7C,KAAK,EAAE,eAAe,CAAA;QACtB,KAAK,EAAE,UAAU,CAAA;KAClB;IAED,UAAiB,+BAA+B;QAC9C,KAAK,EAAE,gBAAgB,CAAA;QACvB,KAAK,EAAE,SAAS,CAAC,YAAY,CAAA;KAC9B;IAED,UAAiB,2BAA2B;QAC1C,KAAK,EAAE,YAAY,CAAA;QACnB,KAAK,EAAE,UAAU,CAAA;KAClB;IAED,UAAiB,2BAA2B;QAC1C,KAAK,EAAE,YAAY,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;KACd;IAED,UAAiB,sBAAsB;QACrC,KAAK,EAAE,OAAO,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd;IAED,UAAiB,4BAA4B;QAC3C,KAAK,EAAE,aAAa,CAAA;QACpB,KAAK,EAAE,UAAU,CAAA;KAClB;IAED,UAAiB,8BAA8B;QAC7C,KAAK,EAAE,eAAe,CAAA;QACtB,KAAK,EAAE,UAAU,CAAA;KAClB;IAED,UAAiB,uBAAuB;QACtC,KAAK,EAAE,QAAQ,CAAA;QACf,KAAK,EAAE,UAAU,CAAA;KAClB;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAExE;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAEpG;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,wBAAwB,GAAG,8BAA8B,GAAG,+BAA+B,GAAG,2BAA2B,GAAG,2BAA2B,GAAG,sBAAsB,GAAG,4BAA4B,GAAG,8BAA8B,GAAG,uBAAuB,CAAC,CAEhX;CACF"}
@@ -0,0 +1,203 @@
1
+ import { decodeMessage, encodeMessage, enumeration, message, streamMessage } from 'protons-runtime';
2
+ export var IpnsEntry;
3
+ (function (IpnsEntry) {
4
+ let ValidityType;
5
+ (function (ValidityType) {
6
+ ValidityType["EOL"] = "EOL";
7
+ })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));
8
+ let __ValidityTypeValues;
9
+ (function (__ValidityTypeValues) {
10
+ __ValidityTypeValues[__ValidityTypeValues["EOL"] = 0] = "EOL";
11
+ })(__ValidityTypeValues || (__ValidityTypeValues = {}));
12
+ (function (ValidityType) {
13
+ ValidityType.codec = () => {
14
+ return enumeration(__ValidityTypeValues);
15
+ };
16
+ })(ValidityType = IpnsEntry.ValidityType || (IpnsEntry.ValidityType = {}));
17
+ let _codec;
18
+ IpnsEntry.codec = () => {
19
+ if (_codec == null) {
20
+ _codec = message((obj, w, opts = {}) => {
21
+ if (opts.lengthDelimited !== false) {
22
+ w.fork();
23
+ }
24
+ if (obj.value != null) {
25
+ w.uint32(10);
26
+ w.bytes(obj.value);
27
+ }
28
+ if (obj.signatureV1 != null) {
29
+ w.uint32(18);
30
+ w.bytes(obj.signatureV1);
31
+ }
32
+ if (obj.validityType != null) {
33
+ w.uint32(24);
34
+ IpnsEntry.ValidityType.codec().encode(obj.validityType, w);
35
+ }
36
+ if (obj.validity != null) {
37
+ w.uint32(34);
38
+ w.bytes(obj.validity);
39
+ }
40
+ if (obj.sequence != null) {
41
+ w.uint32(40);
42
+ w.uint64(obj.sequence);
43
+ }
44
+ if (obj.ttl != null) {
45
+ w.uint32(48);
46
+ w.uint64(obj.ttl);
47
+ }
48
+ if (obj.publicKey != null) {
49
+ w.uint32(58);
50
+ w.bytes(obj.publicKey);
51
+ }
52
+ if (obj.signatureV2 != null) {
53
+ w.uint32(66);
54
+ w.bytes(obj.signatureV2);
55
+ }
56
+ if (obj.data != null) {
57
+ w.uint32(74);
58
+ w.bytes(obj.data);
59
+ }
60
+ if (opts.lengthDelimited !== false) {
61
+ w.ldelim();
62
+ }
63
+ }, (reader, length, opts = {}) => {
64
+ const obj = {};
65
+ const end = length == null ? reader.len : reader.pos + length;
66
+ while (reader.pos < end) {
67
+ const tag = reader.uint32();
68
+ switch (tag >>> 3) {
69
+ case 1: {
70
+ obj.value = reader.bytes();
71
+ break;
72
+ }
73
+ case 2: {
74
+ obj.signatureV1 = reader.bytes();
75
+ break;
76
+ }
77
+ case 3: {
78
+ obj.validityType = IpnsEntry.ValidityType.codec().decode(reader);
79
+ break;
80
+ }
81
+ case 4: {
82
+ obj.validity = reader.bytes();
83
+ break;
84
+ }
85
+ case 5: {
86
+ obj.sequence = reader.uint64();
87
+ break;
88
+ }
89
+ case 6: {
90
+ obj.ttl = reader.uint64();
91
+ break;
92
+ }
93
+ case 7: {
94
+ obj.publicKey = reader.bytes();
95
+ break;
96
+ }
97
+ case 8: {
98
+ obj.signatureV2 = reader.bytes();
99
+ break;
100
+ }
101
+ case 9: {
102
+ obj.data = reader.bytes();
103
+ break;
104
+ }
105
+ default: {
106
+ reader.skipType(tag & 7);
107
+ break;
108
+ }
109
+ }
110
+ }
111
+ return obj;
112
+ }, function* (reader, length, prefix, opts = {}) {
113
+ const end = length == null ? reader.len : reader.pos + length;
114
+ while (reader.pos < end) {
115
+ const tag = reader.uint32();
116
+ switch (tag >>> 3) {
117
+ case 1: {
118
+ yield {
119
+ field: `${prefix}.value`,
120
+ value: reader.bytes()
121
+ };
122
+ break;
123
+ }
124
+ case 2: {
125
+ yield {
126
+ field: `${prefix}.signatureV1`,
127
+ value: reader.bytes()
128
+ };
129
+ break;
130
+ }
131
+ case 3: {
132
+ yield {
133
+ field: `${prefix}.validityType`,
134
+ value: IpnsEntry.ValidityType.codec().decode(reader)
135
+ };
136
+ break;
137
+ }
138
+ case 4: {
139
+ yield {
140
+ field: `${prefix}.validity`,
141
+ value: reader.bytes()
142
+ };
143
+ break;
144
+ }
145
+ case 5: {
146
+ yield {
147
+ field: `${prefix}.sequence`,
148
+ value: reader.uint64()
149
+ };
150
+ break;
151
+ }
152
+ case 6: {
153
+ yield {
154
+ field: `${prefix}.ttl`,
155
+ value: reader.uint64()
156
+ };
157
+ break;
158
+ }
159
+ case 7: {
160
+ yield {
161
+ field: `${prefix}.publicKey`,
162
+ value: reader.bytes()
163
+ };
164
+ break;
165
+ }
166
+ case 8: {
167
+ yield {
168
+ field: `${prefix}.signatureV2`,
169
+ value: reader.bytes()
170
+ };
171
+ break;
172
+ }
173
+ case 9: {
174
+ yield {
175
+ field: `${prefix}.data`,
176
+ value: reader.bytes()
177
+ };
178
+ break;
179
+ }
180
+ default: {
181
+ reader.skipType(tag & 7);
182
+ break;
183
+ }
184
+ }
185
+ }
186
+ });
187
+ }
188
+ return _codec;
189
+ };
190
+ function encode(obj) {
191
+ return encodeMessage(obj, IpnsEntry.codec());
192
+ }
193
+ IpnsEntry.encode = encode;
194
+ function decode(buf, opts) {
195
+ return decodeMessage(buf, IpnsEntry.codec(), opts);
196
+ }
197
+ IpnsEntry.decode = decode;
198
+ function stream(buf, opts) {
199
+ return streamMessage(buf, IpnsEntry.codec(), opts);
200
+ }
201
+ IpnsEntry.stream = stream;
202
+ })(IpnsEntry || (IpnsEntry = {}));
203
+ //# sourceMappingURL=ipns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipns.js","sourceRoot":"","sources":["../../../src/pb/ipns.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export declare namespace IPNSPublishMetadata {
14
14
  field: '$.lifetime';
15
15
  value: number;
16
16
  }
17
- function encode(obj: Partial<IPNSPublishMetadata>): Uint8Array;
17
+ function encode(obj: Partial<IPNSPublishMetadata>): Uint8Array<ArrayBuffer>;
18
18
  function decode(buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<IPNSPublishMetadata>): IPNSPublishMetadata;
19
19
  function stream(buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<IPNSPublishMetadata>): Generator<IPNSPublishMetadataKeyNameFieldEvent | IPNSPublishMetadataLifetimeFieldEvent>;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/pb/metadata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,yBAAiB,mBAAmB,CAAC;IAG5B,MAAM,KAAK,QAAO,KAAK,CAAC,mBAAmB,CA+EjD,CAAA;IAED,UAAiB,oCAAoC;QACnD,KAAK,EAAE,WAAW,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd;IAED,UAAiB,qCAAqC;QACpD,KAAK,EAAE,YAAY,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;KACd;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAErE;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAExH;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,oCAAoC,GAAG,qCAAqC,CAAC,CAE5L;CACF"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/pb/metadata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,yBAAiB,mBAAmB,CAAC;IAG5B,MAAM,KAAK,QAAO,KAAK,CAAC,mBAAmB,CA+EjD,CAAA;IAED,UAAiB,oCAAoC;QACnD,KAAK,EAAE,WAAW,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd;IAED,UAAiB,qCAAqC;QACpD,KAAK,EAAE,YAAY,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;KACd;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAElF;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAExH;IAED,SAAgB,MAAM,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,oCAAoC,GAAG,qCAAqC,CAAC,CAE5L;CACF"}
@@ -0,0 +1,155 @@
1
+ import { IpnsEntry } from './pb/ipns.ts';
2
+ import type { PrivateKey, PublicKey } from '@helia/interface';
3
+ import type { AbortOptions } from 'abort-error';
4
+ import type { Key } from 'interface-datastore/key';
5
+ export declare const namespace = "/ipns/";
6
+ export declare const namespaceLength: number;
7
+ export interface IPNSRecordV1V2 {
8
+ /**
9
+ * value of the record
10
+ */
11
+ value: string;
12
+ /**
13
+ * signature of the record
14
+ */
15
+ signatureV1: Uint8Array;
16
+ /**
17
+ * Type of validation being used
18
+ */
19
+ validityType: IpnsEntry.ValidityType;
20
+ /**
21
+ * expiration datetime for the record in RFC3339 format
22
+ */
23
+ validity: string;
24
+ /**
25
+ * number representing the version of the record
26
+ */
27
+ sequence: bigint;
28
+ /**
29
+ * ttl in nanoseconds
30
+ */
31
+ ttl?: bigint;
32
+ /**
33
+ * the public portion of the key that signed this record
34
+ */
35
+ publicKey: PublicKey;
36
+ /**
37
+ * the v2 signature of the record
38
+ */
39
+ signatureV2: Uint8Array;
40
+ /**
41
+ * extensible data
42
+ */
43
+ data: Uint8Array;
44
+ /**
45
+ * The marshalled record
46
+ */
47
+ bytes: Uint8Array;
48
+ }
49
+ export interface IPNSRecordV2 {
50
+ /**
51
+ * value of the record
52
+ */
53
+ value: string;
54
+ /**
55
+ * the v2 signature of the record
56
+ */
57
+ signatureV2: Uint8Array;
58
+ /**
59
+ * Type of validation being used
60
+ */
61
+ validityType: IpnsEntry.ValidityType;
62
+ /**
63
+ * If the validity type is EOL, this is the expiration datetime for the record
64
+ * in RFC3339 format
65
+ */
66
+ validity: string;
67
+ /**
68
+ * number representing the version of the record
69
+ */
70
+ sequence: bigint;
71
+ /**
72
+ * ttl in nanoseconds
73
+ */
74
+ ttl?: bigint;
75
+ /**
76
+ * the public portion of the key that signed this record
77
+ */
78
+ publicKey: PublicKey;
79
+ /**
80
+ * extensible data
81
+ */
82
+ data: Uint8Array;
83
+ /**
84
+ * The marshalled record
85
+ */
86
+ bytes: Uint8Array;
87
+ }
88
+ export type IPNSRecord = IPNSRecordV1V2 | IPNSRecordV2;
89
+ export interface IPNSRecordData {
90
+ Value: Uint8Array;
91
+ Validity: Uint8Array;
92
+ ValidityType: IpnsEntry.ValidityType;
93
+ Sequence: bigint;
94
+ TTL: bigint;
95
+ }
96
+ export interface IDKeys {
97
+ routingPubKey: Key;
98
+ pkKey: Key;
99
+ routingKey: Key;
100
+ ipnsKey: Key;
101
+ }
102
+ export interface CreateOptions extends AbortOptions {
103
+ ttlNs?: number | bigint;
104
+ v1Compatible?: boolean;
105
+ }
106
+ export interface CreateV2OrV1Options extends AbortOptions {
107
+ v1Compatible: true;
108
+ }
109
+ export interface CreateV2Options extends AbortOptions {
110
+ v1Compatible: false;
111
+ }
112
+ /**
113
+ * Creates a new IPNS record and signs it with the given private key.
114
+ * The IPNS Record validity should follow the [RFC3339]{@link https://www.ietf.org/rfc/rfc3339.txt} with nanoseconds precision.
115
+ * Note: This function does not embed the public key. If you want to do that, use `EmbedPublicKey`.
116
+ *
117
+ * The passed value can be a CID, a PublicKey or an arbitrary string path e.g. `/ipfs/...` or `/ipns/...`.
118
+ *
119
+ * CIDs will be converted to v1 and stored in the record as a string similar to: `/ipfs/${cid}`
120
+ * PublicKeys will create recursive records, eg. the record value will be `/ipns/${cidV1Libp2pKey}`
121
+ * String paths will be stored in the record as-is, but they must start with `"/"`
122
+ *
123
+ * @param {PrivateKey} privateKey - the private key for signing the record.
124
+ * @param {CID | PublicKey | string} value - content to be stored in the record.
125
+ * @param {number | bigint} seq - number representing the current version of the record.
126
+ * @param {number} lifetime - lifetime of the record (in milliseconds).
127
+ * @param {CreateOptions} options - additional create options.
128
+ */
129
+ export declare function createIPNSRecord(privateKey: PrivateKey, value: string, seq: number | bigint, lifetime: number, options?: CreateV2OrV1Options): Promise<IPNSRecordV1V2>;
130
+ export declare function createIPNSRecord(privateKey: PrivateKey, value: string, seq: number | bigint, lifetime: number, options: CreateV2Options): Promise<IPNSRecordV2>;
131
+ export declare function createIPNSRecord(privateKey: PrivateKey, value: string, seq: number | bigint, lifetime: number, options: CreateOptions): Promise<IPNSRecordV1V2>;
132
+ /**
133
+ * Same as create(), but instead of generating a new Date, it receives the intended expiration time
134
+ * WARNING: nano precision is not standard, make sure the value in seconds is 9 orders of magnitude lesser than the one provided.
135
+ *
136
+ * The passed value can be a CID, a PublicKey or an arbitrary string path e.g. `/ipfs/...` or `/ipns/...`.
137
+ *
138
+ * CIDs will be converted to v1 and stored in the record as a string similar to: `/ipfs/${cid}`
139
+ * PublicKeys will create recursive records, eg. the record value will be `/ipns/${cidV1Libp2pKey}`
140
+ * String paths will be stored in the record as-is, but they must start with `"/"`
141
+ *
142
+ * @param {PrivateKey} privateKey - the private key for signing the record.
143
+ * @param {CID | PublicKey | string} value - content to be stored in the record.
144
+ * @param {number | bigint} seq - number representing the current version of the record.
145
+ * @param {string} expiration - expiration datetime for record in the [RFC3339]{@link https://www.ietf.org/rfc/rfc3339.txt} with nanoseconds precision.
146
+ * @param {CreateOptions} options - additional creation options.
147
+ */
148
+ export declare function createIPNSRecordWithExpiration(privateKey: PrivateKey, value: string, seq: number | bigint, expiration: string, options?: CreateV2OrV1Options): Promise<IPNSRecordV1V2>;
149
+ export declare function createIPNSRecordWithExpiration(privateKey: PrivateKey, value: string, seq: number | bigint, expiration: string, options: CreateV2Options): Promise<IPNSRecordV2>;
150
+ export declare function createIPNSRecordWithExpiration(privateKey: PrivateKey, value: string, seq: number | bigint, expiration: string, options: CreateOptions): Promise<IPNSRecordV1V2>;
151
+ export { unmarshalIPNSRecord } from './utils.ts';
152
+ export { marshalIPNSRecord } from './utils.ts';
153
+ export { multihashToIPNSRoutingKey } from './utils.ts';
154
+ export { multihashFromIPNSRoutingKey } from './utils.ts';
155
+ //# sourceMappingURL=records.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import NanoDate from 'timestamp-nano';
3
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
4
+ import { SignatureCreationError } from "./errors.js";
5
+ import { IpnsEntry } from "./pb/ipns.js";
6
+ import { createCborData, ipnsRecordDataForV1Sig, ipnsRecordDataForV2Sig, marshalIPNSRecord } from "./utils.js";
7
+ const log = logger('ipns');
8
+ const DEFAULT_TTL_NS = 5 * 60 * 1e+9; // 5 Minutes or 300 Seconds, as suggested by https://specs.ipfs.tech/ipns/ipns-record/#ttl-uint64
9
+ export const namespace = '/ipns/';
10
+ export const namespaceLength = namespace.length;
11
+ const defaultCreateOptions = {
12
+ v1Compatible: true,
13
+ ttlNs: DEFAULT_TTL_NS
14
+ };
15
+ export async function createIPNSRecord(privateKey, value, seq, lifetime, options = defaultCreateOptions) {
16
+ // Validity in ISOString with nanoseconds precision and validity type EOL
17
+ const expirationDate = new NanoDate(Date.now() + Number(lifetime));
18
+ const validityType = IpnsEntry.ValidityType.EOL;
19
+ const ttlNs = BigInt(options.ttlNs ?? DEFAULT_TTL_NS);
20
+ return _create(privateKey, value, seq, validityType, expirationDate.toString(), ttlNs, options);
21
+ }
22
+ export async function createIPNSRecordWithExpiration(privateKey, value, seq, expiration, options = defaultCreateOptions) {
23
+ const expirationDate = NanoDate.fromString(expiration);
24
+ const validityType = IpnsEntry.ValidityType.EOL;
25
+ const ttlNs = BigInt(options.ttlNs ?? DEFAULT_TTL_NS);
26
+ return _create(privateKey, value, seq, validityType, expirationDate.toString(), ttlNs, options);
27
+ }
28
+ const _create = async (privateKey, value, seq, validityType, validity, ttl, options = defaultCreateOptions) => {
29
+ seq = BigInt(seq);
30
+ const isoValidity = uint8ArrayFromString(validity);
31
+ const data = createCborData(value, validityType, isoValidity, seq, ttl);
32
+ const sigData = ipnsRecordDataForV2Sig(data);
33
+ const signatureV2 = await privateKey.sign(sigData, options);
34
+ const publicKey = shouldEmbedPublicKey(privateKey.publicKey) ? privateKey.publicKey : undefined;
35
+ let record;
36
+ if (options.v1Compatible === true) {
37
+ const signatureV1 = await signLegacyV1(privateKey, value, validityType, isoValidity);
38
+ record = {
39
+ value,
40
+ signatureV1,
41
+ validity,
42
+ validityType,
43
+ sequence: seq,
44
+ ttl,
45
+ signatureV2,
46
+ data,
47
+ publicKey
48
+ };
49
+ }
50
+ else {
51
+ record = {
52
+ value,
53
+ validity,
54
+ validityType,
55
+ sequence: seq,
56
+ ttl,
57
+ signatureV2,
58
+ data,
59
+ publicKey
60
+ };
61
+ }
62
+ record.bytes = marshalIPNSRecord(record);
63
+ return record;
64
+ };
65
+ export { unmarshalIPNSRecord } from "./utils.js";
66
+ export { marshalIPNSRecord } from "./utils.js";
67
+ export { multihashToIPNSRoutingKey } from "./utils.js";
68
+ export { multihashFromIPNSRoutingKey } from "./utils.js";
69
+ /**
70
+ * Sign ipns record data using the legacy V1 signature scheme
71
+ */
72
+ const signLegacyV1 = async (privateKey, value, validityType, validity, options) => {
73
+ try {
74
+ const dataForSignature = ipnsRecordDataForV1Sig(value, validityType, validity);
75
+ return await privateKey.sign(dataForSignature, options);
76
+ }
77
+ catch (error) {
78
+ log.error('record signature creation failed', error);
79
+ throw new SignatureCreationError('Record signature creation failed');
80
+ }
81
+ };
82
+ /**
83
+ * Returns true if the public key multihash is not an identity hash
84
+ */
85
+ function shouldEmbedPublicKey(key) {
86
+ return key.toMultihash().code !== 0;
87
+ }
88
+ //# sourceMappingURL=records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/records.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { GetOptions, IPNSRouting, PutOptions } from './index.ts';
2
+ import type { Keychain } from '@helia/interface';
2
3
  import type { Fetch } from '@libp2p/fetch';
3
4
  import type { PeerId, PublicKey, TypedEventTarget, ComponentLogger, Startable, Metrics, Libp2p } from '@libp2p/interface';
4
5
  import type { Datastore } from 'interface-datastore';
@@ -35,6 +36,7 @@ export interface PubSub extends TypedEventTarget<PubSubEvents> {
35
36
  export interface PubsubRoutingComponents {
36
37
  datastore: Datastore;
37
38
  logger: ComponentLogger;
39
+ keychain: Keychain;
38
40
  metrics?: Metrics;
39
41
  libp2p: Pick<Libp2p<{
40
42
  pubsub: PubSub;
@@ -79,6 +81,7 @@ export declare class PubSubRouting implements IPNSRouting, Startable {
79
81
  private readonly fetchPeers;
80
82
  private shutdownController;
81
83
  private fetchTopologyId?;
84
+ private keychain;
82
85
  constructor(components: PubsubRoutingComponents, init?: PubsubRoutingInit);
83
86
  /**
84
87
  * Put a value to the pubsub datastore indexed by the received key properly encoded
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../../src/routing/pubsub.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAErE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAgB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACvI,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIpD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,YAAY,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAA;IAC1D,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,MAAO,SAAQ,gBAAgB,CAAC,YAAY,CAAC;IAC5D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACnE,SAAS,IAAI,MAAM,EAAE,CAAA;IACrB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,CAAA;CAC3G;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,oBAAoB,GAC9B,aAAa,CAAC,qBAAqB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,GAC9E,aAAa,CAAC,uBAAuB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACzD,aAAa,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;AAE3C,qBAAa,aAAc,YAAW,WAAW,EAAE,SAAS;;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoG;IAC3H,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,eAAe,CAAC,CAAQ;gBAEnB,UAAU,EAAE,uBAAuB,EAAE,IAAI,GAAE,iBAAsB;IAuK9E;;OAEG;IACG,GAAG,CAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxG;;;;OAIG;IACG,GAAG,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAuDjF;;OAEG;IACH,gBAAgB,IAAK,MAAM,EAAE;IAI7B;;OAEG;IACH,MAAM,CAAE,GAAG,EAAE,SAAS,GAAG,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI;IAc5D,QAAQ,IAAK,MAAM;IAIb,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAkB7B,IAAI,IAAK,IAAI;CAQd;AA0BD;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAE,UAAU,EAAE,uBAAuB,EAAE,IAAI,GAAE,iBAAsB,GAAG,WAAW,CAEtG"}
1
+ {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../../src/routing/pubsub.ts"],"names":[],"mappings":"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"}