@helia/utils 2.5.2-6f8165b5 → 2.5.2-73a28eda
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +2 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/errors.d.ts +4 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +4 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +12 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/constants.d.ts +4 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js +4 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/get-codec.d.ts +2 -1
- package/dist/src/utils/get-codec.d.ts.map +1 -1
- package/dist/src/utils/get-codec.js +0 -1
- package/dist/src/utils/get-codec.js.map +1 -1
- package/dist/src/utils/get-crypto.d.ts +4 -0
- package/dist/src/utils/get-crypto.d.ts.map +1 -0
- package/dist/src/utils/get-crypto.js +35 -0
- package/dist/src/utils/get-crypto.js.map +1 -0
- package/dist/src/utils/get-hasher.d.ts +2 -1
- package/dist/src/utils/get-hasher.d.ts.map +1 -1
- package/dist/src/utils/get-hasher.js.map +1 -1
- package/package.json +5 -6
- package/src/errors.ts +5 -0
- package/src/index.ts +23 -3
- package/src/utils/constants.ts +3 -0
- package/src/utils/get-codec.ts +2 -3
- package/src/utils/get-crypto.ts +44 -0
- package/src/utils/get-hasher.ts +2 -1
package/dist/src/errors.d.ts
CHANGED
package/dist/src/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,IAAI,SAAuB;IAClC,IAAI,SAAuB;CAC5B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAC,IAAI,SAAqB;IAChC,IAAI,SAAqB;CAC1B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,IAAI,SAAiC;IAC5C,IAAI,SAAiC;CACtC;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,MAAM,CAAC,IAAI,SAA8B;IACzC,IAAI,SAA8B;CACnC;AAED,qBAAa,cAAe,SAAQ,cAAc;IAChD,MAAM,CAAC,IAAI,SAAmB;IAC9B,IAAI,SAAmB;CACxB;AAED,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,MAAM,CAAC,IAAI,SAAyB;IACpC,IAAI,SAAyB;CAC9B;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,IAAI,SAAmC;IAC9C,IAAI,SAAmC;CACxC"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,IAAI,SAAuB;IAClC,IAAI,SAAuB;CAC5B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAC,IAAI,SAAqB;IAChC,IAAI,SAAqB;CAC1B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,IAAI,SAAiC;IAC5C,IAAI,SAAiC;CACtC;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,MAAM,CAAC,IAAI,SAA8B;IACzC,IAAI,SAA8B;CACnC;AAED,qBAAa,cAAe,SAAQ,cAAc;IAChD,MAAM,CAAC,IAAI,SAAmB;IAC9B,IAAI,SAAmB;CACxB;AAED,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,MAAM,CAAC,IAAI,SAAyB;IACpC,IAAI,SAAyB;CAC9B;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,IAAI,SAAmC;IAC9C,IAAI,SAAmC;CACxC;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,CAAC,IAAI,SAA0B;IACrC,IAAI,SAA0B;CAC/B"}
|
package/dist/src/errors.js
CHANGED
|
@@ -26,4 +26,8 @@ export class BlockNotFoundWhileOfflineError extends Error {
|
|
|
26
26
|
static name = 'BlockNotFoundWhileOfflineError';
|
|
27
27
|
name = 'BlockNotFoundWhileOfflineError';
|
|
28
28
|
}
|
|
29
|
+
export class DecryptionFailedError extends Error {
|
|
30
|
+
static name = 'DecryptionFailedError';
|
|
31
|
+
name = 'DecryptionFailedError';
|
|
32
|
+
}
|
|
29
33
|
//# sourceMappingURL=errors.js.map
|
package/dist/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,IAAI,GAAG,oBAAoB,CAAA;;AAG7B,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,IAAI,GAAG,kBAAkB,CAAA;;AAG3B,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,IAAI,GAAG,8BAA8B,CAAA;IAC5C,IAAI,GAAG,8BAA8B,CAAA;;AAGvC,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,MAAM,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,IAAI,GAAG,2BAA2B,CAAA;;AAGpC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAChD,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,IAAI,GAAG,gBAAgB,CAAA;;AAGzB,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACtD,MAAM,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,IAAI,GAAG,sBAAsB,CAAA;;AAG/B,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,IAAI,GAAG,gCAAgC,CAAA;IAC9C,IAAI,GAAG,gCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,IAAI,GAAG,oBAAoB,CAAA;;AAG7B,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,IAAI,GAAG,kBAAkB,CAAA;;AAG3B,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,MAAM,CAAC,IAAI,GAAG,8BAA8B,CAAA;IAC5C,IAAI,GAAG,8BAA8B,CAAA;;AAGvC,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,MAAM,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,IAAI,GAAG,2BAA2B,CAAA;;AAGpC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAChD,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,IAAI,GAAG,gBAAgB,CAAA;;AAGzB,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACtD,MAAM,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,IAAI,GAAG,sBAAsB,CAAA;;AAG/B,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,MAAM,CAAC,IAAI,GAAG,gCAAgC,CAAA;IAC9C,IAAI,GAAG,gCAAgC,CAAA;;AAGzC,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,IAAI,GAAG,uBAAuB,CAAA"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
import { TypedEventEmitter } from '@libp2p/interface';
|
|
8
8
|
import { BlockStorage } from './storage.ts';
|
|
9
9
|
import type { BlockStorageInit } from './storage.ts';
|
|
10
|
-
import type { CodecLoader, GCOptions, HasherLoader, Helia as HeliaInterface, HeliaEvents, Routing } from '@helia/interface';
|
|
10
|
+
import type { CodecLoader, GCOptions, HasherLoader, Helia as HeliaInterface, HeliaEvents, Routing, CryptoLoader, Crypto } from '@helia/interface';
|
|
11
11
|
import type { BlockBroker } from '@helia/interface/blocks';
|
|
12
12
|
import type { Pins } from '@helia/interface/pins';
|
|
13
|
+
import type { Keychain, KeychainInit } from '@ipshipyard/keychain';
|
|
13
14
|
import type { ComponentLogger, Libp2p, Metrics } from '@libp2p/interface';
|
|
14
|
-
import type { KeychainInit } from '@libp2p/keychain';
|
|
15
15
|
import type { DNS } from '@multiformats/dns';
|
|
16
16
|
import type { Blockstore } from 'interface-blockstore';
|
|
17
17
|
import type { Datastore } from 'interface-datastore';
|
|
@@ -84,6 +84,14 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
|
|
|
84
84
|
* the local blockstore
|
|
85
85
|
*/
|
|
86
86
|
blockBrokers: Array<(components: any) => BlockBroker>;
|
|
87
|
+
/**
|
|
88
|
+
* A list of pre-supported public/private key implementations
|
|
89
|
+
*/
|
|
90
|
+
cryptos?: Array<Crypto>;
|
|
91
|
+
/**
|
|
92
|
+
* Dynamically load a cryptography implementation
|
|
93
|
+
*/
|
|
94
|
+
loadCrypto?: CryptoLoader;
|
|
87
95
|
/**
|
|
88
96
|
* Garbage collection requires preventing blockstore writes during searches
|
|
89
97
|
* for unpinned blocks as DAGs are typically pinned after they've been
|
|
@@ -156,7 +164,9 @@ export declare class Helia<T extends Libp2p> implements HeliaInterface<T> {
|
|
|
156
164
|
routing: Routing;
|
|
157
165
|
getCodec: CodecLoader;
|
|
158
166
|
getHasher: HasherLoader;
|
|
167
|
+
getCrypto: CryptoLoader;
|
|
159
168
|
dns: DNS;
|
|
169
|
+
keychain: Keychain;
|
|
160
170
|
metrics?: Metrics;
|
|
161
171
|
private readonly log;
|
|
162
172
|
constructor(init: Omit<HeliaInit, 'start' | 'libp2p'> & {
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* This module contains utility code that is shared between various Helia
|
|
5
5
|
* modules such as `helia`, `@helia/http`, etc.
|
|
6
6
|
*/
|
|
7
|
+
import { keychain } from '@ipshipyard/keychain';
|
|
7
8
|
import { contentRoutingSymbol, peerRoutingSymbol, start, stop, TypedEventEmitter } from '@libp2p/interface';
|
|
8
9
|
import { dns } from '@multiformats/dns';
|
|
9
10
|
import drain from 'it-drain';
|
|
@@ -13,6 +14,7 @@ import { Routing as RoutingClass } from "./routing.js";
|
|
|
13
14
|
import { BlockStorage } from "./storage.js";
|
|
14
15
|
import { assertDatastoreVersionIsCurrent } from "./utils/datastore-version.js";
|
|
15
16
|
import { getCodec } from "./utils/get-codec.js";
|
|
17
|
+
import { getCrypto } from "./utils/get-crypto.js";
|
|
16
18
|
import { getHasher } from "./utils/get-hasher.js";
|
|
17
19
|
import { NetworkedStorage } from "./utils/networked-storage.js";
|
|
18
20
|
export { AbstractSession } from "./abstract-session.js";
|
|
@@ -27,7 +29,9 @@ export class Helia {
|
|
|
27
29
|
routing;
|
|
28
30
|
getCodec;
|
|
29
31
|
getHasher;
|
|
32
|
+
getCrypto;
|
|
30
33
|
dns;
|
|
34
|
+
keychain;
|
|
31
35
|
metrics;
|
|
32
36
|
log;
|
|
33
37
|
constructor(init) {
|
|
@@ -35,11 +39,12 @@ export class Helia {
|
|
|
35
39
|
this.log = this.logger.forComponent('helia');
|
|
36
40
|
this.getHasher = getHasher(init.hashers, init.loadHasher);
|
|
37
41
|
this.getCodec = getCodec(init.codecs, init.loadCodec);
|
|
42
|
+
this.getCrypto = getCrypto(init.cryptos, init.loadCrypto);
|
|
38
43
|
this.dns = init.dns ?? dns();
|
|
39
44
|
this.metrics = init.metrics;
|
|
40
45
|
this.libp2p = init.libp2p;
|
|
41
46
|
this.events = new TypedEventEmitter();
|
|
42
|
-
// @ts-expect-error routing
|
|
47
|
+
// @ts-expect-error routing and keychain are not set
|
|
43
48
|
const components = {
|
|
44
49
|
blockstore: init.blockstore,
|
|
45
50
|
datastore: init.datastore,
|
|
@@ -48,10 +53,12 @@ export class Helia {
|
|
|
48
53
|
blockBrokers: [],
|
|
49
54
|
getHasher: this.getHasher,
|
|
50
55
|
getCodec: this.getCodec,
|
|
56
|
+
getCrypto: this.getCrypto,
|
|
51
57
|
dns: this.dns,
|
|
52
58
|
metrics: this.metrics,
|
|
53
59
|
...(init.components ?? {})
|
|
54
60
|
};
|
|
61
|
+
this.keychain = components.keychain = keychain()(components);
|
|
55
62
|
this.routing = components.routing = new RoutingClass(components, {
|
|
56
63
|
routers: (init.routers ?? []).flatMap((router) => {
|
|
57
64
|
if (typeof router === 'function') {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAe/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAKvD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,QAAQ,KAAK,CAAA;AAC1B,eAAO,MAAM,UAAU,QAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAA;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CodecLoader } from '@helia/interface';
|
|
1
2
|
import type { BlockCodec } from 'multiformats/codecs/interface';
|
|
2
|
-
export declare function getCodec
|
|
3
|
+
export declare function getCodec(initialCodecs?: Array<BlockCodec<any, any>>, loadCodec?: CodecLoader): CodecLoader;
|
|
3
4
|
//# sourceMappingURL=get-codec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-codec.d.ts","sourceRoot":"","sources":["../../../src/utils/get-codec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-codec.d.ts","sourceRoot":"","sources":["../../../src/utils/get-codec.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE/D,wBAAgB,QAAQ,CAAE,aAAa,GAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAM,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,WAAW,CAkC/G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-codec.js","sourceRoot":"","sources":["../../../src/utils/get-codec.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"get-codec.js","sourceRoot":"","sources":["../../../src/utils/get-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAA;AAChD,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,UAAU,QAAQ,CAAE,gBAA6C,EAAE,EAAE,SAAuB;IAChG,MAAM,MAAM,GAAyC;QACnD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK;QACnB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG;QACf,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO;QACvB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO;QACvB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;KAClB,CAAA;IAED,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAExB,IAAI,KAAK,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;YAE3B,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,KAAK,GAAG,MAAM,GAAG,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,GAAG,CAAA;YACb,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;QAC5B,CAAC;QAED,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,IAAI,iBAAiB,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAA;IACjE,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-crypto.d.ts","sourceRoot":"","sources":["../../../src/utils/get-crypto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,wBAAgB,SAAS,CAAE,cAAc,GAAE,KAAK,CAAC,MAAM,CAAM,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,YAAY,CAqCtG"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { UnknownCryptoError } from '@helia/interface';
|
|
2
|
+
import { ecdsaCrypto, ed25519Crypto, rsaCrypto } from '@ipshipyard/crypto';
|
|
3
|
+
import { isPromise } from "./is-promise.js";
|
|
4
|
+
export function getCrypto(initialCryptos = [], loadCrypto) {
|
|
5
|
+
const cryptos = {};
|
|
6
|
+
initialCryptos = [
|
|
7
|
+
ecdsaCrypto(),
|
|
8
|
+
ed25519Crypto(),
|
|
9
|
+
rsaCrypto(),
|
|
10
|
+
...initialCryptos
|
|
11
|
+
];
|
|
12
|
+
initialCryptos.forEach(crypto => {
|
|
13
|
+
cryptos[crypto.type] = crypto;
|
|
14
|
+
cryptos[crypto.code] = crypto;
|
|
15
|
+
});
|
|
16
|
+
return async (nameOrCode) => {
|
|
17
|
+
let crypto = cryptos[nameOrCode];
|
|
18
|
+
if (crypto == null && loadCrypto != null) {
|
|
19
|
+
const res = loadCrypto(nameOrCode);
|
|
20
|
+
if (isPromise(res)) {
|
|
21
|
+
crypto = await res;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
crypto = res;
|
|
25
|
+
}
|
|
26
|
+
cryptos[crypto.type] = crypto;
|
|
27
|
+
cryptos[crypto.code] = crypto;
|
|
28
|
+
}
|
|
29
|
+
if (crypto != null) {
|
|
30
|
+
return crypto;
|
|
31
|
+
}
|
|
32
|
+
throw new UnknownCryptoError(`Could not load crypto for ${crypto}`);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=get-crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-crypto.js","sourceRoot":"","sources":["../../../src/utils/get-crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,UAAU,SAAS,CAAE,iBAAgC,EAAE,EAAE,UAAyB;IACtF,MAAM,OAAO,GAAoC,EAAE,CAAA;IAEnD,cAAc,GAAG;QACf,WAAW,EAAE;QACb,aAAa,EAAE;QACf,SAAS,EAAE;QACX,GAAG,cAAc;KAClB,CAAA;IAED,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE;QAC1B,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;QAEhC,IAAI,MAAM,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;YAElC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,GAAG,MAAM,GAAG,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,CAAA;YACd,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;YAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QAC/B,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,IAAI,kBAAkB,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAA;IACrE,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HasherLoader } from '@helia/interface';
|
|
1
2
|
import type { MultihashHasher } from 'multiformats/hashes/interface';
|
|
2
|
-
export declare function getHasher(initialHashers?: MultihashHasher[], loadHasher?:
|
|
3
|
+
export declare function getHasher(initialHashers?: MultihashHasher[], loadHasher?: HasherLoader): HasherLoader;
|
|
3
4
|
//# sourceMappingURL=get-hasher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-hasher.d.ts","sourceRoot":"","sources":["../../../src/utils/get-hasher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,wBAAgB,SAAS,CAAE,cAAc,GAAE,eAAe,EAAO,EAAE,UAAU,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"get-hasher.d.ts","sourceRoot":"","sources":["../../../src/utils/get-hasher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,wBAAgB,SAAS,CAAE,cAAc,GAAE,eAAe,EAAO,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,YAAY,CAgC1G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-hasher.js","sourceRoot":"","sources":["../../../src/utils/get-hasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"get-hasher.js","sourceRoot":"","sources":["../../../src/utils/get-hasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,UAAU,SAAS,CAAE,iBAAoC,EAAE,EAAE,UAAyB;IAC1F,MAAM,OAAO,GAAoC;QAC/C,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM;QACrB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM;QACrB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ;KAC1B,CAAA;IAED,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAE1B,IAAI,MAAM,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAE5B,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,GAAG,MAAM,GAAG,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,CAAA;YACd,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QAC/B,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,IAAI,yBAAyB,CAAC,6CAA6C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,gIAAgI,CAAC,CAAA;IACrO,CAAC,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/utils",
|
|
3
|
-
"version": "2.5.2-
|
|
3
|
+
"version": "2.5.2-73a28eda",
|
|
4
4
|
"description": "Shared code that implements the Helia API",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/main/packages/utils#readme",
|
|
@@ -48,12 +48,13 @@
|
|
|
48
48
|
"test:electron-main": "aegir test -t electron-main"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@helia/interface": "6.2.1-
|
|
51
|
+
"@helia/interface": "6.2.1-73a28eda",
|
|
52
52
|
"@ipld/dag-cbor": "^10.0.0",
|
|
53
53
|
"@ipld/dag-json": "^11.0.0",
|
|
54
54
|
"@ipld/dag-pb": "^4.1.5",
|
|
55
|
+
"@ipshipyard/crypto": "^1.1.0",
|
|
56
|
+
"@ipshipyard/keychain": "^1.0.2",
|
|
55
57
|
"@libp2p/interface": "^3.2.0",
|
|
56
|
-
"@libp2p/keychain": "^6.0.12",
|
|
57
58
|
"@libp2p/utils": "^7.0.15",
|
|
58
59
|
"@multiformats/dns": "^1.0.13",
|
|
59
60
|
"@multiformats/multiaddr": "^13.0.1",
|
|
@@ -80,6 +81,7 @@
|
|
|
80
81
|
"@libp2p/logger": "^6.2.4",
|
|
81
82
|
"@libp2p/peer-id": "^6.0.6",
|
|
82
83
|
"@types/sinon": "^21.0.1",
|
|
84
|
+
"abort-error": "^1.0.2",
|
|
83
85
|
"aegir": "^48.0.4",
|
|
84
86
|
"datastore-core": "^12.0.1",
|
|
85
87
|
"delay": "^7.0.0",
|
|
@@ -88,8 +90,5 @@
|
|
|
88
90
|
"sinon": "^22.0.0",
|
|
89
91
|
"sinon-ts": "^2.0.0"
|
|
90
92
|
},
|
|
91
|
-
"browser": {
|
|
92
|
-
"./dist/src/utils/libp2p-defaults.js": "./dist/src/utils/libp2p-defaults.browser.js"
|
|
93
|
-
},
|
|
94
93
|
"sideEffects": false
|
|
95
94
|
}
|
package/src/errors.ts
CHANGED
|
@@ -32,3 +32,8 @@ export class BlockNotFoundWhileOfflineError extends Error {
|
|
|
32
32
|
static name = 'BlockNotFoundWhileOfflineError'
|
|
33
33
|
name = 'BlockNotFoundWhileOfflineError'
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
export class DecryptionFailedError extends Error {
|
|
37
|
+
static name = 'DecryptionFailedError'
|
|
38
|
+
name = 'DecryptionFailedError'
|
|
39
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* modules such as `helia`, `@helia/http`, etc.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import { keychain } from '@ipshipyard/keychain'
|
|
8
9
|
import { contentRoutingSymbol, peerRoutingSymbol, start, stop, TypedEventEmitter } from '@libp2p/interface'
|
|
9
10
|
import { dns } from '@multiformats/dns'
|
|
10
11
|
import drain from 'it-drain'
|
|
@@ -14,14 +15,15 @@ import { Routing as RoutingClass } from './routing.ts'
|
|
|
14
15
|
import { BlockStorage } from './storage.ts'
|
|
15
16
|
import { assertDatastoreVersionIsCurrent } from './utils/datastore-version.ts'
|
|
16
17
|
import { getCodec } from './utils/get-codec.ts'
|
|
18
|
+
import { getCrypto } from './utils/get-crypto.ts'
|
|
17
19
|
import { getHasher } from './utils/get-hasher.ts'
|
|
18
20
|
import { NetworkedStorage } from './utils/networked-storage.ts'
|
|
19
21
|
import type { BlockStorageInit } from './storage.ts'
|
|
20
|
-
import type { CodecLoader, GCOptions, HasherLoader, Helia as HeliaInterface, HeliaEvents, Routing } from '@helia/interface'
|
|
22
|
+
import type { CodecLoader, GCOptions, HasherLoader, Helia as HeliaInterface, HeliaEvents, Routing, CryptoLoader, Crypto } from '@helia/interface'
|
|
21
23
|
import type { BlockBroker } from '@helia/interface/blocks'
|
|
22
24
|
import type { Pins } from '@helia/interface/pins'
|
|
25
|
+
import type { Keychain, KeychainInit } from '@ipshipyard/keychain'
|
|
23
26
|
import type { ComponentLogger, ContentRouting, Libp2p, Logger, Metrics, PeerRouting } from '@libp2p/interface'
|
|
24
|
-
import type { KeychainInit } from '@libp2p/keychain'
|
|
25
27
|
import type { DNS } from '@multiformats/dns'
|
|
26
28
|
import type { Blockstore } from 'interface-blockstore'
|
|
27
29
|
import type { Datastore } from 'interface-datastore'
|
|
@@ -109,6 +111,16 @@ export interface HeliaInit<T extends Libp2p = Libp2p> {
|
|
|
109
111
|
*/
|
|
110
112
|
blockBrokers: Array<(components: any) => BlockBroker>
|
|
111
113
|
|
|
114
|
+
/**
|
|
115
|
+
* A list of pre-supported public/private key implementations
|
|
116
|
+
*/
|
|
117
|
+
cryptos?: Array<Crypto>
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Dynamically load a cryptography implementation
|
|
121
|
+
*/
|
|
122
|
+
loadCrypto?: CryptoLoader
|
|
123
|
+
|
|
112
124
|
/**
|
|
113
125
|
* Garbage collection requires preventing blockstore writes during searches
|
|
114
126
|
* for unpinned blocks as DAGs are typically pinned after they've been
|
|
@@ -187,9 +199,11 @@ interface Components {
|
|
|
187
199
|
blockBrokers: BlockBroker[]
|
|
188
200
|
routing: Routing
|
|
189
201
|
dns: DNS
|
|
202
|
+
keychain: Keychain
|
|
190
203
|
metrics?: Metrics
|
|
191
204
|
getCodec: CodecLoader
|
|
192
205
|
getHasher: HasherLoader
|
|
206
|
+
getCrypto: CryptoLoader
|
|
193
207
|
}
|
|
194
208
|
|
|
195
209
|
export class Helia<T extends Libp2p> implements HeliaInterface<T> {
|
|
@@ -202,7 +216,9 @@ export class Helia<T extends Libp2p> implements HeliaInterface<T> {
|
|
|
202
216
|
public routing: Routing
|
|
203
217
|
public getCodec: CodecLoader
|
|
204
218
|
public getHasher: HasherLoader
|
|
219
|
+
public getCrypto: CryptoLoader
|
|
205
220
|
public dns: DNS
|
|
221
|
+
public keychain: Keychain
|
|
206
222
|
public metrics?: Metrics
|
|
207
223
|
private readonly log: Logger
|
|
208
224
|
|
|
@@ -211,12 +227,13 @@ export class Helia<T extends Libp2p> implements HeliaInterface<T> {
|
|
|
211
227
|
this.log = this.logger.forComponent('helia')
|
|
212
228
|
this.getHasher = getHasher(init.hashers, init.loadHasher)
|
|
213
229
|
this.getCodec = getCodec(init.codecs, init.loadCodec)
|
|
230
|
+
this.getCrypto = getCrypto(init.cryptos, init.loadCrypto)
|
|
214
231
|
this.dns = init.dns ?? dns()
|
|
215
232
|
this.metrics = init.metrics
|
|
216
233
|
this.libp2p = init.libp2p
|
|
217
234
|
this.events = new TypedEventEmitter<HeliaEvents<T>>()
|
|
218
235
|
|
|
219
|
-
// @ts-expect-error routing
|
|
236
|
+
// @ts-expect-error routing and keychain are not set
|
|
220
237
|
const components: Components = {
|
|
221
238
|
blockstore: init.blockstore,
|
|
222
239
|
datastore: init.datastore,
|
|
@@ -225,11 +242,14 @@ export class Helia<T extends Libp2p> implements HeliaInterface<T> {
|
|
|
225
242
|
blockBrokers: [],
|
|
226
243
|
getHasher: this.getHasher,
|
|
227
244
|
getCodec: this.getCodec,
|
|
245
|
+
getCrypto: this.getCrypto,
|
|
228
246
|
dns: this.dns,
|
|
229
247
|
metrics: this.metrics,
|
|
230
248
|
...(init.components ?? {})
|
|
231
249
|
}
|
|
232
250
|
|
|
251
|
+
this.keychain = components.keychain = keychain()(components)
|
|
252
|
+
|
|
233
253
|
this.routing = components.routing = new RoutingClass(components, {
|
|
234
254
|
routers: (init.routers ?? []).flatMap((router: Partial<Routing> | ((components: any) => Partial<Routing>)) => {
|
|
235
255
|
if (typeof router === 'function') {
|
package/src/utils/get-codec.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* eslint max-depth: ["error", 7] */
|
|
2
|
-
|
|
3
1
|
import { UnknownCodecError } from '@helia/interface'
|
|
4
2
|
import * as dagCbor from '@ipld/dag-cbor'
|
|
5
3
|
import * as dagJson from '@ipld/dag-json'
|
|
@@ -7,9 +5,10 @@ import * as dagPb from '@ipld/dag-pb'
|
|
|
7
5
|
import * as json from 'multiformats/codecs/json'
|
|
8
6
|
import * as raw from 'multiformats/codecs/raw'
|
|
9
7
|
import { isPromise } from './is-promise.ts'
|
|
8
|
+
import type { CodecLoader } from '@helia/interface'
|
|
10
9
|
import type { BlockCodec } from 'multiformats/codecs/interface'
|
|
11
10
|
|
|
12
|
-
export function getCodec
|
|
11
|
+
export function getCodec (initialCodecs: Array<BlockCodec<any, any>> = [], loadCodec?: CodecLoader): CodecLoader {
|
|
13
12
|
const codecs: Record<number, BlockCodec<any, any>> = {
|
|
14
13
|
[dagPb.code]: dagPb,
|
|
15
14
|
[raw.code]: raw,
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { UnknownCryptoError } from '@helia/interface'
|
|
2
|
+
import { ecdsaCrypto, ed25519Crypto, rsaCrypto } from '@ipshipyard/crypto'
|
|
3
|
+
import { isPromise } from './is-promise.ts'
|
|
4
|
+
import type { CryptoLoader } from '@helia/interface'
|
|
5
|
+
import type { Crypto } from '@ipshipyard/crypto'
|
|
6
|
+
|
|
7
|
+
export function getCrypto (initialCryptos: Array<Crypto> = [], loadCrypto?: CryptoLoader): CryptoLoader {
|
|
8
|
+
const cryptos: Record<string | number, Crypto> = {}
|
|
9
|
+
|
|
10
|
+
initialCryptos = [
|
|
11
|
+
ecdsaCrypto(),
|
|
12
|
+
ed25519Crypto(),
|
|
13
|
+
rsaCrypto(),
|
|
14
|
+
...initialCryptos
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
initialCryptos.forEach(crypto => {
|
|
18
|
+
cryptos[crypto.type] = crypto
|
|
19
|
+
cryptos[crypto.code] = crypto
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
return async (nameOrCode) => {
|
|
23
|
+
let crypto = cryptos[nameOrCode]
|
|
24
|
+
|
|
25
|
+
if (crypto == null && loadCrypto != null) {
|
|
26
|
+
const res = loadCrypto(nameOrCode)
|
|
27
|
+
|
|
28
|
+
if (isPromise(res)) {
|
|
29
|
+
crypto = await res
|
|
30
|
+
} else {
|
|
31
|
+
crypto = res
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
cryptos[crypto.type] = crypto
|
|
35
|
+
cryptos[crypto.code] = crypto
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (crypto != null) {
|
|
39
|
+
return crypto
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
throw new UnknownCryptoError(`Could not load crypto for ${crypto}`)
|
|
43
|
+
}
|
|
44
|
+
}
|
package/src/utils/get-hasher.ts
CHANGED
|
@@ -2,9 +2,10 @@ import { UnknownHashAlgorithmError } from '@helia/interface'
|
|
|
2
2
|
import { identity } from 'multiformats/hashes/identity'
|
|
3
3
|
import { sha256, sha512 } from 'multiformats/hashes/sha2'
|
|
4
4
|
import { isPromise } from './is-promise.ts'
|
|
5
|
+
import type { HasherLoader } from '@helia/interface'
|
|
5
6
|
import type { MultihashHasher } from 'multiformats/hashes/interface'
|
|
6
7
|
|
|
7
|
-
export function getHasher (initialHashers: MultihashHasher[] = [], loadHasher?:
|
|
8
|
+
export function getHasher (initialHashers: MultihashHasher[] = [], loadHasher?: HasherLoader): HasherLoader {
|
|
8
9
|
const hashers: Record<number, MultihashHasher> = {
|
|
9
10
|
[sha256.code]: sha256,
|
|
10
11
|
[sha512.code]: sha512,
|