@lde/pipeline 0.40.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/selector.d.ts +24 -0
- package/dist/selector.d.ts.map +1 -1
- package/dist/selector.js +65 -0
- package/package.json +6 -6
package/dist/selector.d.ts
CHANGED
|
@@ -11,6 +11,30 @@ export declare class ManualDatasetSelection implements DatasetSelector {
|
|
|
11
11
|
constructor(datasets: Dataset[]);
|
|
12
12
|
select(): Promise<Paginator<Dataset>>;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Select one {@link Dataset} per RDF file directly inside a local directory, by
|
|
16
|
+
* {@link Dataset.localFile}: the directory acts as a registry of data dumps
|
|
17
|
+
* without descriptions. A file whose extension names no RDF format is skipped
|
|
18
|
+
* with a warning, and subdirectories are ignored.
|
|
19
|
+
*
|
|
20
|
+
* Only pass a directory you trust: everything in it gets read.
|
|
21
|
+
*/
|
|
22
|
+
export declare class DirectorySelector implements DatasetSelector {
|
|
23
|
+
private readonly directory;
|
|
24
|
+
/** @param directory Path of the directory. */
|
|
25
|
+
constructor(directory: string);
|
|
26
|
+
select(): Promise<Paginator<Dataset>>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Select the {@link Dataset}s of several selectors in one run, in the order
|
|
30
|
+
* given, so a run can take datasets from a registry and from local files alike.
|
|
31
|
+
* Each selector is read one page at a time.
|
|
32
|
+
*/
|
|
33
|
+
export declare class CombinedSelector implements DatasetSelector {
|
|
34
|
+
private readonly selectors;
|
|
35
|
+
constructor(selectors: readonly DatasetSelector[]);
|
|
36
|
+
select(): Promise<Paginator<Dataset>>;
|
|
37
|
+
}
|
|
14
38
|
/**
|
|
15
39
|
* Select Datasets from a Dataset Registry.
|
|
16
40
|
*
|
package/dist/selector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,MAAM,EACN,SAAS,EACT,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,MAAM,EACN,SAAS,EACT,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAItC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CACvC;AAED,qBAAa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,OAAO,EAAE;IAE1C,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CAG5C;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAE3C,OAAO,CAAC,QAAQ,CAAC,SAAS;IADtC,8CAA8C;gBACjB,SAAS,EAAE,MAAM;IAExC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CAiB5C;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS,eAAe,EAAE;IAE5D,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CAK5C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAiB;gBAE/B,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,cAAc,CAAC;KAC3B;IAMK,MAAM;CAOb"}
|
package/dist/selector.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { Dataset } from '@lde/dataset';
|
|
1
2
|
import { Paginator, } from '@lde/dataset-registry-client';
|
|
3
|
+
import { readdir } from 'node:fs/promises';
|
|
4
|
+
import { join } from 'node:path';
|
|
2
5
|
export class ManualDatasetSelection {
|
|
3
6
|
datasets;
|
|
4
7
|
constructor(datasets) {
|
|
@@ -8,6 +11,52 @@ export class ManualDatasetSelection {
|
|
|
8
11
|
return new Paginator(async () => this.datasets, this.datasets.length);
|
|
9
12
|
}
|
|
10
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Select one {@link Dataset} per RDF file directly inside a local directory, by
|
|
16
|
+
* {@link Dataset.localFile}: the directory acts as a registry of data dumps
|
|
17
|
+
* without descriptions. A file whose extension names no RDF format is skipped
|
|
18
|
+
* with a warning, and subdirectories are ignored.
|
|
19
|
+
*
|
|
20
|
+
* Only pass a directory you trust: everything in it gets read.
|
|
21
|
+
*/
|
|
22
|
+
export class DirectorySelector {
|
|
23
|
+
directory;
|
|
24
|
+
/** @param directory Path of the directory. */
|
|
25
|
+
constructor(directory) {
|
|
26
|
+
this.directory = directory;
|
|
27
|
+
}
|
|
28
|
+
async select() {
|
|
29
|
+
const entries = await readdir(this.directory, { withFileTypes: true });
|
|
30
|
+
const datasets = entries
|
|
31
|
+
.filter((entry) => !entry.isDirectory())
|
|
32
|
+
.map((entry) => join(this.directory, entry.name))
|
|
33
|
+
.sort()
|
|
34
|
+
.flatMap((path) => {
|
|
35
|
+
try {
|
|
36
|
+
return [Dataset.localFile(path)];
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.warn(`Skipping ${path}: ${error.message}`);
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return new ManualDatasetSelection(datasets).select();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Select the {@link Dataset}s of several selectors in one run, in the order
|
|
48
|
+
* given, so a run can take datasets from a registry and from local files alike.
|
|
49
|
+
* Each selector is read one page at a time.
|
|
50
|
+
*/
|
|
51
|
+
export class CombinedSelector {
|
|
52
|
+
selectors;
|
|
53
|
+
constructor(selectors) {
|
|
54
|
+
this.selectors = selectors;
|
|
55
|
+
}
|
|
56
|
+
async select() {
|
|
57
|
+
return new ConcatenatedPaginator(await Promise.all(this.selectors.map((selector) => selector.select())));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
11
60
|
/**
|
|
12
61
|
* Select Datasets from a Dataset Registry.
|
|
13
62
|
*
|
|
@@ -41,3 +90,19 @@ export class RegistrySelector {
|
|
|
41
90
|
}
|
|
42
91
|
}
|
|
43
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Several paginators read as one. Each iteration reads them afresh, so loops
|
|
95
|
+
* over it never share state, and each paginator still reads one page at a time.
|
|
96
|
+
*/
|
|
97
|
+
class ConcatenatedPaginator extends Paginator {
|
|
98
|
+
paginators;
|
|
99
|
+
constructor(paginators) {
|
|
100
|
+
super(async () => [], paginators.reduce((total, paginator) => total + paginator.total, 0));
|
|
101
|
+
this.paginators = paginators;
|
|
102
|
+
}
|
|
103
|
+
async *[Symbol.asyncIterator]() {
|
|
104
|
+
for (const paginator of this.paginators) {
|
|
105
|
+
yield* paginator;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lde/pipeline",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"url": "git+https://github.com/ldelements/lde.git",
|
|
6
6
|
"directory": "packages/pipeline"
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
"!**/*.tsbuildinfo"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@lde/dataset": "^0.
|
|
28
|
-
"@lde/dataset-registry-client": "^0.
|
|
29
|
-
"@lde/distribution-health": "^0.
|
|
30
|
-
"@lde/distribution-probe": "^0.
|
|
31
|
-
"@lde/sparql-importer": "^0.
|
|
27
|
+
"@lde/dataset": "^0.10.0",
|
|
28
|
+
"@lde/dataset-registry-client": "^0.12.0",
|
|
29
|
+
"@lde/distribution-health": "^0.6.0",
|
|
30
|
+
"@lde/distribution-probe": "^0.5.0",
|
|
31
|
+
"@lde/sparql-importer": "^0.10.0",
|
|
32
32
|
"@lde/sparql-server": "^0.6.0",
|
|
33
33
|
"@rdfjs/namespace": "^2.0.1",
|
|
34
34
|
"@rdfjs/types": "^2.0.1",
|