@helia/utils 2.1.1-760ed27f → 2.1.1-921696f9
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.
|
@@ -14,8 +14,11 @@ export interface GraphNode<T = unknown, C extends number = number, A extends num
|
|
|
14
14
|
path: CID[];
|
|
15
15
|
}
|
|
16
16
|
export interface GraphWalker {
|
|
17
|
-
walk<T = any>(cid: CID, options?:
|
|
17
|
+
walk<T = any>(cid: CID, options?: WalkOptions<T>): AsyncGenerator<GraphNode<T>>;
|
|
18
18
|
}
|
|
19
19
|
export declare function depthFirstWalker(components: GraphWalkerComponents, init?: GraphWalkerInit): GraphWalker;
|
|
20
20
|
export declare function breadthFirstWalker(components: GraphWalkerComponents, init?: GraphWalkerInit): GraphWalker;
|
|
21
|
+
export interface WalkOptions<T> extends AbortOptions {
|
|
22
|
+
includeChild?(child: CID, parent: BlockView<T, number, number, 0 | 1>): boolean;
|
|
23
|
+
}
|
|
21
24
|
//# sourceMappingURL=graph-walker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-walker.d.ts","sourceRoot":"","sources":["../../src/graph-walker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,WAAW,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;CAE/B;AAED,MAAM,WAAW,SAAS,CAAE,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,CAAC;IACtH,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAE,CAAC,GAAG,GAAG,EAAG,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"graph-walker.d.ts","sourceRoot":"","sources":["../../src/graph-walker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,WAAW,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;CAE/B;AAED,MAAM,WAAW,SAAS,CAAE,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,CAAC;IACtH,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAE,CAAC,GAAG,GAAG,EAAG,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;CAClF;AAED,wBAAgB,gBAAgB,CAAE,UAAU,EAAE,qBAAqB,EAAE,IAAI,GAAE,eAAoB,GAAG,WAAW,CAE5G;AAED,wBAAgB,kBAAkB,CAAE,UAAU,EAAE,qBAAqB,EAAE,IAAI,GAAE,eAAoB,GAAG,WAAW,CAE9G;AAQD,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,YAAY;IAClD,YAAY,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;CAChF"}
|
package/dist/src/graph-walker.js
CHANGED
|
@@ -17,20 +17,23 @@ class AbstractGraphWalker {
|
|
|
17
17
|
const queue = this.getQueue();
|
|
18
18
|
const gen = filter(queue.toGenerator(options), (node) => node != null);
|
|
19
19
|
let finished = false;
|
|
20
|
-
const job = async (
|
|
21
|
-
const cid =
|
|
22
|
-
const bytes = await toBuffer(this.components.blockstore.get(cid,
|
|
20
|
+
const job = async (opts) => {
|
|
21
|
+
const cid = opts.cid;
|
|
22
|
+
const bytes = await toBuffer(this.components.blockstore.get(cid, opts));
|
|
23
23
|
const block = createUnsafe({
|
|
24
24
|
cid,
|
|
25
25
|
bytes,
|
|
26
26
|
codec: await this.components.getCodec(cid.code)
|
|
27
27
|
});
|
|
28
28
|
for (const [, linkedCid] of block.links()) {
|
|
29
|
+
if (options?.includeChild?.(linkedCid, block) === false) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
29
32
|
queue.add(job, {
|
|
30
|
-
...
|
|
33
|
+
...opts,
|
|
31
34
|
cid: linkedCid,
|
|
32
|
-
depth:
|
|
33
|
-
path: [...
|
|
35
|
+
depth: opts.depth + 1,
|
|
36
|
+
path: [...opts.path, linkedCid]
|
|
34
37
|
})
|
|
35
38
|
// eslint-disable-next-line no-loop-func
|
|
36
39
|
.catch(err => {
|
|
@@ -43,8 +46,8 @@ class AbstractGraphWalker {
|
|
|
43
46
|
}
|
|
44
47
|
return {
|
|
45
48
|
block,
|
|
46
|
-
depth:
|
|
47
|
-
path:
|
|
49
|
+
depth: opts.depth,
|
|
50
|
+
path: opts.path
|
|
48
51
|
};
|
|
49
52
|
};
|
|
50
53
|
queue.add(job, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-walker.js","sourceRoot":"","sources":["../../src/graph-walker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,QAAQ,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAyBjD,MAAM,UAAU,gBAAgB,CAAE,UAAiC,EAAE,OAAwB,EAAE;IAC7F,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAE,UAAiC,EAAE,OAAwB,EAAE;IAC/F,OAAO,IAAI,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACtD,CAAC;
|
|
1
|
+
{"version":3,"file":"graph-walker.js","sourceRoot":"","sources":["../../src/graph-walker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/utils",
|
|
3
|
-
"version": "2.1.1-
|
|
3
|
+
"version": "2.1.1-921696f9",
|
|
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",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"test:electron-main": "aegir test -t electron-main"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@helia/interface": "6.0.0-
|
|
50
|
+
"@helia/interface": "6.0.0-921696f9",
|
|
51
51
|
"@ipld/dag-cbor": "^9.2.5",
|
|
52
52
|
"@ipld/dag-json": "^10.2.5",
|
|
53
53
|
"@ipld/dag-pb": "^4.1.5",
|
package/src/graph-walker.ts
CHANGED
|
@@ -23,7 +23,7 @@ export interface GraphNode <T = unknown, C extends number = number, A extends nu
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export interface GraphWalker {
|
|
26
|
-
walk <T = any> (cid: CID, options?:
|
|
26
|
+
walk <T = any> (cid: CID, options?: WalkOptions<T>): AsyncGenerator<GraphNode<T>>
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export function depthFirstWalker (components: GraphWalkerComponents, init: GraphWalkerInit = {}): GraphWalker {
|
|
@@ -40,6 +40,10 @@ interface JobOptions extends AbortOptions {
|
|
|
40
40
|
path: CID[]
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
export interface WalkOptions<T> extends AbortOptions {
|
|
44
|
+
includeChild?(child: CID, parent: BlockView<T, number, number, 0 | 1>): boolean
|
|
45
|
+
}
|
|
46
|
+
|
|
43
47
|
abstract class AbstractGraphWalker {
|
|
44
48
|
private readonly components: GraphWalkerComponents
|
|
45
49
|
|
|
@@ -47,14 +51,14 @@ abstract class AbstractGraphWalker {
|
|
|
47
51
|
this.components = components
|
|
48
52
|
}
|
|
49
53
|
|
|
50
|
-
async * walk <T = any> (cid: CID, options?:
|
|
54
|
+
async * walk <T = any> (cid: CID, options?: WalkOptions<T>): AsyncGenerator<GraphNode<T>> {
|
|
51
55
|
const queue = this.getQueue()
|
|
52
56
|
const gen = filter(queue.toGenerator(options), (node) => node != null) as AsyncGenerator<GraphNode<T>>
|
|
53
57
|
let finished = false
|
|
54
58
|
|
|
55
|
-
const job = async (
|
|
56
|
-
const cid =
|
|
57
|
-
const bytes = await toBuffer(this.components.blockstore.get(cid,
|
|
59
|
+
const job = async (opts: JobOptions): Promise<GraphNode<T> | undefined> => {
|
|
60
|
+
const cid = opts.cid
|
|
61
|
+
const bytes = await toBuffer(this.components.blockstore.get(cid, opts))
|
|
58
62
|
const block = createUnsafe<T, number, number, 0 | 1>({
|
|
59
63
|
cid,
|
|
60
64
|
bytes,
|
|
@@ -62,11 +66,15 @@ abstract class AbstractGraphWalker {
|
|
|
62
66
|
})
|
|
63
67
|
|
|
64
68
|
for (const [, linkedCid] of block.links()) {
|
|
69
|
+
if (options?.includeChild?.(linkedCid, block) === false) {
|
|
70
|
+
continue
|
|
71
|
+
}
|
|
72
|
+
|
|
65
73
|
queue.add(job, {
|
|
66
|
-
...
|
|
74
|
+
...opts,
|
|
67
75
|
cid: linkedCid,
|
|
68
|
-
depth:
|
|
69
|
-
path: [...
|
|
76
|
+
depth: opts.depth + 1,
|
|
77
|
+
path: [...opts.path, linkedCid]
|
|
70
78
|
})
|
|
71
79
|
// eslint-disable-next-line no-loop-func
|
|
72
80
|
.catch(err => {
|
|
@@ -80,8 +88,8 @@ abstract class AbstractGraphWalker {
|
|
|
80
88
|
|
|
81
89
|
return {
|
|
82
90
|
block,
|
|
83
|
-
depth:
|
|
84
|
-
path:
|
|
91
|
+
depth: opts.depth,
|
|
92
|
+
path: opts.path
|
|
85
93
|
}
|
|
86
94
|
}
|
|
87
95
|
|