@hydrofoil/talos-core 0.1.0 → 0.1.2
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/CHANGELOG.md +14 -0
- package/bootstrap.d.ts +9 -0
- package/bootstrap.js +38 -0
- package/bootstrap.ts +47 -0
- package/env.d.ts +6 -0
- package/env.js +4 -0
- package/env.ts +4 -0
- package/index.d.ts +4 -3
- package/index.js +16 -18
- package/index.ts +18 -19
- package/lib/fileStream.d.ts +1 -1
- package/lib/fileStream.js +3 -3
- package/lib/fileStream.ts +3 -2
- package/lib/log.d.ts +1 -1
- package/lib/ns.d.ts +12 -1
- package/lib/ns.js +9 -3
- package/lib/ns.ts +18 -2
- package/package.json +8 -6
- package/test/__snapshots__/index.test.ts.snap +6 -6
- package/test/index.test.js +23 -20
- package/test/index.test.ts +25 -21
- package/test/lib/prefixHandler.test.js +3 -3
- package/test/lib/prefixHandler.test.ts +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @hydrofoil/talos-core
|
|
2
2
|
|
|
3
|
+
## 0.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 33d941d: Moved `bootstrap.js` to core package
|
|
8
|
+
- 3d2bf6e: Update `get-stream`
|
|
9
|
+
|
|
10
|
+
## 0.1.1
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 0cbf9cf: Updated `@zazuko/env-node` to v2
|
|
15
|
+
- 59639c1: Update `@zazuko/env`
|
|
16
|
+
|
|
3
17
|
## 0.1.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
package/bootstrap.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NamedNode, DatasetCore } from 'rdf-js';
|
|
2
|
+
import type { ResourceStore } from '@hydrofoil/resource-store';
|
|
3
|
+
type Bootstrap = {
|
|
4
|
+
store: ResourceStore;
|
|
5
|
+
dataset: DatasetCore;
|
|
6
|
+
apiUri: NamedNode;
|
|
7
|
+
};
|
|
8
|
+
export declare function bootstrap({ dataset, apiUri, store }: Bootstrap): Promise<void>;
|
|
9
|
+
export {};
|
package/bootstrap.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isNamedNode } from 'is-graph-pointer';
|
|
2
|
+
import addAll from 'rdf-dataset-ext/addAll.js';
|
|
3
|
+
import $rdf from './env.js';
|
|
4
|
+
import log from './lib/log.js';
|
|
5
|
+
export async function bootstrap({ dataset, apiUri, store }) {
|
|
6
|
+
const graph = $rdf.clownface({ dataset, graph: $rdf.ns.talos.resources });
|
|
7
|
+
const resources = graph.has($rdf.ns.talos.action);
|
|
8
|
+
for (const resource of resources.toArray().filter(isNamedNode)) {
|
|
9
|
+
const resourceData = [...dataset.match(null, null, null, resource.term)]
|
|
10
|
+
.map(({ subject, predicate, object }) => $rdf.quad(subject, predicate, object));
|
|
11
|
+
const pointer = $rdf.clownface({
|
|
12
|
+
dataset: $rdf.dataset(resourceData),
|
|
13
|
+
})
|
|
14
|
+
.namedNode(resource.term)
|
|
15
|
+
.addOut($rdf.ns.hydra.apiDocumentation, apiUri);
|
|
16
|
+
const action = resource.out($rdf.ns.talos.action).term;
|
|
17
|
+
const exists = await store.exists(pointer.term);
|
|
18
|
+
if (exists && $rdf.ns.talos.skip.equals(action)) {
|
|
19
|
+
log(`Skipping resource ${resource}`);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (exists) {
|
|
23
|
+
if ($rdf.ns.talos.merge.equals(action)) {
|
|
24
|
+
log(`Merging existing resource ${resource}`);
|
|
25
|
+
const current = await store.load(pointer.term);
|
|
26
|
+
addAll(pointer.dataset, current.dataset);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
log(`Replacing resource ${resource}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
log(`Creating resource ${resource}`);
|
|
34
|
+
}
|
|
35
|
+
await store.save(pointer);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5QyxPQUFPLE1BQU0sTUFBTSwyQkFBMkIsQ0FBQTtBQUM5QyxPQUFPLElBQUksTUFBTSxVQUFVLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFBO0FBUTlCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWE7SUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUN6RSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUM5RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckUsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUNqRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUNwQyxDQUFDO2FBQ0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBRWpELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0MsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMvQyxHQUFHLENBQUMscUJBQXFCLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDcEMsU0FBUTtTQUNUO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3RDLEdBQUcsQ0FBQyw2QkFBNkIsUUFBUSxFQUFFLENBQUMsQ0FBQTtnQkFDNUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3pDO2lCQUFNO2dCQUNMLEdBQUcsQ0FBQyxzQkFBc0IsUUFBUSxFQUFFLENBQUMsQ0FBQTthQUN0QztTQUNGO2FBQU07WUFDTCxHQUFHLENBQUMscUJBQXFCLFFBQVEsRUFBRSxDQUFDLENBQUE7U0FDckM7UUFFRCxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7S0FDMUI7QUFDSCxDQUFDIn0=
|
package/bootstrap.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { NamedNode, DatasetCore } from 'rdf-js'
|
|
2
|
+
import type { ResourceStore } from '@hydrofoil/resource-store'
|
|
3
|
+
import { isNamedNode } from 'is-graph-pointer'
|
|
4
|
+
import addAll from 'rdf-dataset-ext/addAll.js'
|
|
5
|
+
import $rdf from './env.js'
|
|
6
|
+
import log from './lib/log.js'
|
|
7
|
+
|
|
8
|
+
type Bootstrap = {
|
|
9
|
+
store: ResourceStore
|
|
10
|
+
dataset: DatasetCore
|
|
11
|
+
apiUri: NamedNode
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export async function bootstrap({ dataset, apiUri, store }: Bootstrap): Promise<void> {
|
|
15
|
+
const graph = $rdf.clownface({ dataset, graph: $rdf.ns.talos.resources })
|
|
16
|
+
const resources = graph.has($rdf.ns.talos.action)
|
|
17
|
+
for (const resource of resources.toArray().filter(isNamedNode)) {
|
|
18
|
+
const resourceData = [...dataset.match(null, null, null, resource.term)]
|
|
19
|
+
.map(({ subject, predicate, object }) => $rdf.quad(subject, predicate, object))
|
|
20
|
+
const pointer = $rdf.clownface({
|
|
21
|
+
dataset: $rdf.dataset(resourceData),
|
|
22
|
+
})
|
|
23
|
+
.namedNode(resource.term)
|
|
24
|
+
.addOut($rdf.ns.hydra.apiDocumentation, apiUri)
|
|
25
|
+
|
|
26
|
+
const action = resource.out($rdf.ns.talos.action).term
|
|
27
|
+
const exists = await store.exists(pointer.term)
|
|
28
|
+
if (exists && $rdf.ns.talos.skip.equals(action)) {
|
|
29
|
+
log(`Skipping resource ${resource}`)
|
|
30
|
+
continue
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (exists) {
|
|
34
|
+
if ($rdf.ns.talos.merge.equals(action)) {
|
|
35
|
+
log(`Merging existing resource ${resource}`)
|
|
36
|
+
const current = await store.load(pointer.term)
|
|
37
|
+
addAll(pointer.dataset, current.dataset)
|
|
38
|
+
} else {
|
|
39
|
+
log(`Replacing resource ${resource}`)
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
log(`Creating resource ${resource}`)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
await store.save(pointer)
|
|
46
|
+
}
|
|
47
|
+
}
|
package/env.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TalosNsFactory } from './lib/ns.js';
|
|
2
|
+
declare const _default: import("@zazuko/env-core").DerivedEnvironment<import("@zazuko/env-core").DerivedEnvironment<import("@zazuko/env-core").DerivedEnvironment<import("@rdfjs/environment/Environment.js").Environment<import("@tpluscode/rdf-ns-builders").default | import("@rdfjs/namespace/Factory.js").NamespaceFactory | import("@rdfjs/formats/Factory.js").FormatsFactory | import("@rdfjs/data-model/Factory.js").default | import("clownface/Factory.js").default | import("@rdfjs/term-set/Factory.js").TermSetFactory | import("@rdfjs/term-map/Factory.js").TermMapFactory | import("@rdfjs/traverser/Factory.js").TraverserFactory>, import("@rdfjs/environment/Environment.js").Environment<{
|
|
3
|
+
dataset: import("@zazuko/env/lib/DatasetFactoryExt.js").FactoryMethod<import("@zazuko/env/lib/DatasetExt.js").Dataset>;
|
|
4
|
+
init(this: import("@rdfjs/environment/Environment.js").Environment<any>): void;
|
|
5
|
+
}>>, import("@rdfjs/environment/Environment.js").Environment<import("@zazuko/rdf-utils-fs/Factory.js").default | import("@rdfjs/fetch-lite/Factory.js").FetchFactory>>, import("@rdfjs/environment/Environment.js").Environment<TalosNsFactory>>;
|
|
6
|
+
export default _default;
|
package/env.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import parent, { Environment } from '@zazuko/env-node';
|
|
2
|
+
import { TalosNsFactory } from './lib/ns.js';
|
|
3
|
+
export default new Environment([TalosNsFactory], { parent });
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUU1QyxlQUFlLElBQUksV0FBVyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBIn0=
|
package/env.ts
ADDED
package/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import type { Dataset } from '@zazuko/env/lib/DatasetExt.js';
|
|
2
|
+
declare const ns: import("@rdfjs/namespace").NamespaceBuilder<"resources" | "action" | "default" | "overwrite" | "skip" | "merge" | "environmentRepresentation" | "replace">;
|
|
3
|
+
export { ns };
|
|
4
|
+
export declare function fromDirectories(directories: string[], api: string): Promise<Dataset>;
|
package/index.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import walk from '@fcostarodrigo/walk';
|
|
4
|
-
import $rdf from '
|
|
5
|
-
import deleteMatch from 'rdf-dataset-ext/deleteMatch.js';
|
|
6
|
-
import addAll from 'rdf-dataset-ext/addAll.js';
|
|
4
|
+
import $rdf from './env.js';
|
|
7
5
|
import log from './lib/log.js';
|
|
8
6
|
import { getPatchedStream } from './lib/fileStream.js';
|
|
9
7
|
import { optionsFromPrefixes } from './lib/prefixHandler.js';
|
|
10
|
-
|
|
11
|
-
export {
|
|
8
|
+
const { talos: ns } = $rdf.ns;
|
|
9
|
+
export { ns };
|
|
12
10
|
export async function fromDirectories(directories, api) {
|
|
13
11
|
const validDirs = directories.filter(isValidDir);
|
|
14
12
|
const dataset = await validDirs.reduce(toGraphs(api), Promise.resolve($rdf.dataset()));
|
|
@@ -16,10 +14,10 @@ export async function fromDirectories(directories, api) {
|
|
|
16
14
|
return dataset;
|
|
17
15
|
}
|
|
18
16
|
function setDefaultAction(dataset) {
|
|
19
|
-
$rdf.clownface({ dataset, graph:
|
|
20
|
-
.has(
|
|
21
|
-
.deleteOut(
|
|
22
|
-
.addOut(
|
|
17
|
+
$rdf.clownface({ dataset, graph: $rdf.ns.talos.resources })
|
|
18
|
+
.has($rdf.ns.talos.action, $rdf.ns.talos.default)
|
|
19
|
+
.deleteOut($rdf.ns.talos.action, $rdf.ns.talos.default)
|
|
20
|
+
.addOut($rdf.ns.talos.action, $rdf.ns.talos.overwrite);
|
|
23
21
|
}
|
|
24
22
|
function toGraphs(api) {
|
|
25
23
|
return async function (previousPromise, dir) {
|
|
@@ -42,7 +40,7 @@ function toGraphs(api) {
|
|
|
42
40
|
const parsedResourceOptions = {};
|
|
43
41
|
parserStream.on('prefix', optionsFromPrefixes(parsedResourceOptions));
|
|
44
42
|
const resources = $rdf.termSet();
|
|
45
|
-
const resourceOptions = $rdf.clownface({ dataset: previous, graph:
|
|
43
|
+
const resourceOptions = $rdf.clownface({ dataset: previous, graph: $rdf.ns.talos.resources });
|
|
46
44
|
try {
|
|
47
45
|
for await (const { subject, predicate, object, ...quad } of parserStream) {
|
|
48
46
|
const graph = quad.graph.equals($rdf.defaultGraph()) ? $rdf.namedNode(url) : quad.graph;
|
|
@@ -63,16 +61,16 @@ function toGraphs(api) {
|
|
|
63
61
|
const environmentRepresentation = parsedResourceOptions.environmentRepresentation || 'default';
|
|
64
62
|
const options = resourceOptions.node(id);
|
|
65
63
|
options
|
|
66
|
-
.deleteOut(
|
|
67
|
-
.addOut(
|
|
68
|
-
.deleteOut(
|
|
69
|
-
.addOut(
|
|
70
|
-
if (options.has(
|
|
71
|
-
previous =
|
|
64
|
+
.deleteOut($rdf.ns.talos.action, $rdf.ns.talos.default)
|
|
65
|
+
.addOut($rdf.ns.talos.action, $rdf.ns.talos(action))
|
|
66
|
+
.deleteOut($rdf.ns.talos.environmentRepresentation, $rdf.ns.talos.default)
|
|
67
|
+
.addOut($rdf.ns.talos.environmentRepresentation, $rdf.ns.talos(environmentRepresentation));
|
|
68
|
+
if (options.has($rdf.ns.talos.environmentRepresentation, $rdf.ns.talos.replace).terms.length) {
|
|
69
|
+
previous = previous.deleteMatches(undefined, undefined, undefined, id);
|
|
72
70
|
}
|
|
73
71
|
});
|
|
74
72
|
}
|
|
75
|
-
addAll(
|
|
73
|
+
previous.addAll(dataset);
|
|
76
74
|
return previous;
|
|
77
75
|
};
|
|
78
76
|
}
|
|
@@ -87,4 +85,4 @@ function isValidDir(dir) {
|
|
|
87
85
|
}
|
|
88
86
|
return true;
|
|
89
87
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sSUFBSSxNQUFNLHFCQUFxQixDQUFBO0FBRXRDLE9BQU8sSUFBSSxNQUFNLFVBQVUsQ0FBQTtBQUMzQixPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUE7QUFDOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFNUQsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQTtBQU9iLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUFDLFdBQXFCLEVBQUUsR0FBVztJQUN0RSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBRXRGLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRXpCLE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLE9BQW9CO0lBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3hELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxN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
|
package/index.ts
CHANGED
|
@@ -2,22 +2,21 @@ import path from 'path'
|
|
|
2
2
|
import fs from 'fs'
|
|
3
3
|
import { NamedNode, DatasetCore } from 'rdf-js'
|
|
4
4
|
import walk from '@fcostarodrigo/walk'
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import addAll from 'rdf-dataset-ext/addAll.js'
|
|
5
|
+
import type { Dataset } from '@zazuko/env/lib/DatasetExt.js'
|
|
6
|
+
import $rdf from './env.js'
|
|
8
7
|
import log from './lib/log.js'
|
|
9
8
|
import { getPatchedStream } from './lib/fileStream.js'
|
|
10
9
|
import { optionsFromPrefixes } from './lib/prefixHandler.js'
|
|
11
|
-
import { talosNs } from './lib/ns.js'
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
const { talos: ns } = $rdf.ns
|
|
12
|
+
export { ns }
|
|
14
13
|
|
|
15
14
|
interface ResourceOptions {
|
|
16
15
|
existingResource: 'merge' | 'overwrite' | 'skip'
|
|
17
16
|
environmentRepresentation: 'default' | 'replace'
|
|
18
17
|
}
|
|
19
18
|
|
|
20
|
-
export async function fromDirectories(directories: string[], api: string): Promise<
|
|
19
|
+
export async function fromDirectories(directories: string[], api: string): Promise<Dataset> {
|
|
21
20
|
const validDirs = directories.filter(isValidDir)
|
|
22
21
|
const dataset = await validDirs.reduce(toGraphs(api), Promise.resolve($rdf.dataset()))
|
|
23
22
|
|
|
@@ -27,14 +26,14 @@ export async function fromDirectories(directories: string[], api: string): Promi
|
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
function setDefaultAction(dataset: DatasetCore) {
|
|
30
|
-
$rdf.clownface({ dataset, graph:
|
|
31
|
-
.has(
|
|
32
|
-
.deleteOut(
|
|
33
|
-
.addOut(
|
|
29
|
+
$rdf.clownface({ dataset, graph: $rdf.ns.talos.resources })
|
|
30
|
+
.has($rdf.ns.talos.action, $rdf.ns.talos.default)
|
|
31
|
+
.deleteOut($rdf.ns.talos.action, $rdf.ns.talos.default)
|
|
32
|
+
.addOut($rdf.ns.talos.action, $rdf.ns.talos.overwrite)
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
function toGraphs(api: string) {
|
|
37
|
-
return async function (previousPromise: Promise<
|
|
36
|
+
return async function (previousPromise: Promise<Dataset>, dir: string): Promise<Dataset> {
|
|
38
37
|
let previous = await previousPromise
|
|
39
38
|
const dataset = $rdf.dataset()
|
|
40
39
|
|
|
@@ -60,7 +59,7 @@ function toGraphs(api: string) {
|
|
|
60
59
|
parserStream.on('prefix', optionsFromPrefixes(parsedResourceOptions))
|
|
61
60
|
|
|
62
61
|
const resources = $rdf.termSet<NamedNode>()
|
|
63
|
-
const resourceOptions = $rdf.clownface({ dataset: previous, graph:
|
|
62
|
+
const resourceOptions = $rdf.clownface({ dataset: previous, graph: $rdf.ns.talos.resources })
|
|
64
63
|
try {
|
|
65
64
|
for await (const { subject, predicate, object, ...quad } of parserStream) {
|
|
66
65
|
const graph: NamedNode = quad.graph.equals($rdf.defaultGraph()) ? $rdf.namedNode(url) : quad.graph
|
|
@@ -82,18 +81,18 @@ function toGraphs(api: string) {
|
|
|
82
81
|
const environmentRepresentation = parsedResourceOptions.environmentRepresentation || 'default'
|
|
83
82
|
const options = resourceOptions.node(id)
|
|
84
83
|
options
|
|
85
|
-
.deleteOut(
|
|
86
|
-
.addOut(
|
|
87
|
-
.deleteOut(
|
|
88
|
-
.addOut(
|
|
84
|
+
.deleteOut($rdf.ns.talos.action, $rdf.ns.talos.default)
|
|
85
|
+
.addOut($rdf.ns.talos.action, $rdf.ns.talos(action))
|
|
86
|
+
.deleteOut($rdf.ns.talos.environmentRepresentation, $rdf.ns.talos.default)
|
|
87
|
+
.addOut($rdf.ns.talos.environmentRepresentation, $rdf.ns.talos(environmentRepresentation))
|
|
89
88
|
|
|
90
|
-
if (options.has(
|
|
91
|
-
previous =
|
|
89
|
+
if (options.has($rdf.ns.talos.environmentRepresentation, $rdf.ns.talos.replace).terms.length) {
|
|
90
|
+
previous = previous.deleteMatches(undefined, undefined, undefined, id)
|
|
92
91
|
}
|
|
93
92
|
})
|
|
94
93
|
}
|
|
95
94
|
|
|
96
|
-
addAll(
|
|
95
|
+
previous.addAll(dataset)
|
|
97
96
|
return previous
|
|
98
97
|
}
|
|
99
98
|
}
|
package/lib/fileStream.d.ts
CHANGED
package/lib/fileStream.js
CHANGED
|
@@ -2,8 +2,8 @@ import fs from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import * as mime from 'mime-types';
|
|
4
4
|
import replaceStream from 'replacestream';
|
|
5
|
-
import { parsers } from '@rdfjs/formats-common';
|
|
6
5
|
import isAbsoluteUrl from 'is-absolute-url';
|
|
6
|
+
import rdf from '../env.js';
|
|
7
7
|
import log from './log.js';
|
|
8
8
|
function replacer(basePath, resourceUrl, s, e = s) {
|
|
9
9
|
return (_, match) => {
|
|
@@ -49,7 +49,7 @@ export function getPatchedStream(file, cwd, api, resourceUrl) {
|
|
|
49
49
|
if (filePatchTransforms.has(mediaType)) {
|
|
50
50
|
fileStream = fileStream.pipe(filePatchTransforms.get(mediaType)(basePath, resourceUrl));
|
|
51
51
|
}
|
|
52
|
-
const parserStream = parsers.import(mediaType, fileStream, {
|
|
52
|
+
const parserStream = rdf.formats.parsers.import(mediaType, fileStream, {
|
|
53
53
|
baseIRI: resourceUrl,
|
|
54
54
|
blankNodePrefix: '',
|
|
55
55
|
});
|
|
@@ -58,4 +58,4 @@ export function getPatchedStream(file, cwd, api, resourceUrl) {
|
|
|
58
58
|
}
|
|
59
59
|
return parserStream;
|
|
60
60
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZpbGVTdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEtBQUssSUFBSSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGFBQWEsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFBO0FBQzNCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUUxQixTQUFTLFFBQVEsQ0FBQyxRQUFnQixFQUFFLFdBQW1CLEVBQUUsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZFLE9BQU8sQ0FBQyxDQUFVLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDbkMsSUFBSSxRQUFnQixDQUFBO1FBQ3BCLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFBO1NBQzFCO1FBRUQsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsS0FBSyxHQUFHLEVBQUU7WUFDN0MsUUFBUSxHQUFHLFFBQVEsR0FBRyxLQUFLLENBQUE7U0FDNUI7YUFBTTtZQUNMLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7WUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTthQUN4QztTQUNGO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFF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
|
package/lib/fileStream.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { Readable } from 'stream'
|
|
|
3
3
|
import path from 'path'
|
|
4
4
|
import * as mime from 'mime-types'
|
|
5
5
|
import replaceStream from 'replacestream'
|
|
6
|
-
import { parsers } from '@rdfjs/formats-common'
|
|
7
6
|
import isAbsoluteUrl from 'is-absolute-url'
|
|
7
|
+
import rdf from '../env.js'
|
|
8
8
|
import log from './log.js'
|
|
9
9
|
|
|
10
10
|
function replacer(basePath: string, resourceUrl: string, s: string, e = s) {
|
|
@@ -57,7 +57,8 @@ export function getPatchedStream(file: string, cwd: string, api: string, resourc
|
|
|
57
57
|
if (filePatchTransforms.has(mediaType)) {
|
|
58
58
|
fileStream = fileStream.pipe(filePatchTransforms.get(mediaType)!(basePath, resourceUrl))
|
|
59
59
|
}
|
|
60
|
-
|
|
60
|
+
|
|
61
|
+
const parserStream = rdf.formats.parsers.import(mediaType, fileStream, {
|
|
61
62
|
baseIRI: resourceUrl,
|
|
62
63
|
blankNodePrefix: '',
|
|
63
64
|
})
|
package/lib/log.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("anylogger").Logger
|
|
1
|
+
declare const _default: import("anylogger").Logger;
|
|
2
2
|
export default _default;
|
package/lib/ns.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
import type NsBuildersFactory from '@tpluscode/rdf-ns-builders';
|
|
2
|
+
import type { NamespaceFactory } from '@rdfjs/namespace/Factory.js';
|
|
3
|
+
import type { Environment } from '@rdfjs/environment/Environment.js';
|
|
4
|
+
import type { NamespaceBuilder } from '@rdfjs/namespace';
|
|
1
5
|
type TalosTerms = 'resources' | 'action' | 'default' | 'overwrite' | 'skip' | 'merge' | 'environmentRepresentation' | 'replace';
|
|
2
|
-
|
|
6
|
+
declare module '@tpluscode/rdf-ns-builders' {
|
|
7
|
+
interface CustomNamespaces {
|
|
8
|
+
talos: NamespaceBuilder<TalosTerms>;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export declare class TalosNsFactory {
|
|
12
|
+
init(this: Environment<NsBuildersFactory | NamespaceFactory>): void;
|
|
13
|
+
}
|
|
3
14
|
export {};
|
package/lib/ns.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export class TalosNsFactory {
|
|
2
|
+
init() {
|
|
3
|
+
this.ns = {
|
|
4
|
+
...this.ns,
|
|
5
|
+
talos: this.namespace('urn:talos:'),
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsTUFBTSxPQUFPLGNBQWM7SUFDekIsSUFBSTtRQUNGLElBQUksQ0FBQyxFQUFFLEdBQUc7WUFDUixHQUFHLElBQUksQ0FBQyxFQUFFO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQWEsWUFBWSxDQUFDO1NBQ2hELENBQUE7SUFDSCxDQUFDO0NBQ0YifQ==
|
package/lib/ns.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type NsBuildersFactory from '@tpluscode/rdf-ns-builders'
|
|
2
|
+
import type { NamespaceFactory } from '@rdfjs/namespace/Factory.js'
|
|
3
|
+
import type { Environment } from '@rdfjs/environment/Environment.js'
|
|
4
|
+
import type { NamespaceBuilder } from '@rdfjs/namespace'
|
|
2
5
|
|
|
3
6
|
type TalosTerms =
|
|
4
7
|
'resources' |
|
|
@@ -10,4 +13,17 @@ type TalosTerms =
|
|
|
10
13
|
'environmentRepresentation' |
|
|
11
14
|
'replace'
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
declare module '@tpluscode/rdf-ns-builders' {
|
|
17
|
+
interface CustomNamespaces {
|
|
18
|
+
talos: NamespaceBuilder<TalosTerms>
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class TalosNsFactory {
|
|
23
|
+
init(this: Environment<NsBuildersFactory | NamespaceFactory>) {
|
|
24
|
+
this.ns = {
|
|
25
|
+
...this.ns,
|
|
26
|
+
talos: this.namespace<TalosTerms>('urn:talos:'),
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydrofoil/talos-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,18 +9,20 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@fcostarodrigo/walk": "^5.0.1",
|
|
12
|
-
"@
|
|
13
|
-
"
|
|
14
|
-
"anylogger": "^1.0.11",
|
|
12
|
+
"@zazuko/env-node": "^2.1.3",
|
|
13
|
+
"anylogger": "^1.1.0-beta.5",
|
|
15
14
|
"is-absolute-url": "^4.0.1",
|
|
15
|
+
"is-graph-pointer": "^2.1.0",
|
|
16
16
|
"mime-types": "^2.1.35",
|
|
17
17
|
"rdf-dataset-ext": "^1.0.1",
|
|
18
18
|
"replacestream": "^4.0.3"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
+
"@rdfjs-elements/formats-pretty": "^0.6.7",
|
|
22
|
+
"@zazuko/env": "^2.2.1",
|
|
21
23
|
"chai": "^4.3.8",
|
|
22
|
-
"get-stream": "^
|
|
23
|
-
"into-stream": "^8.0.
|
|
24
|
+
"get-stream": "^9.0.1",
|
|
25
|
+
"into-stream": "^8.0.1"
|
|
24
26
|
},
|
|
25
27
|
"repository": {
|
|
26
28
|
"type": "git",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
exports["@hydrofoil/talos-core fromDirectories merges resources from multiple graph documents"] = "<https://example.com
|
|
1
|
+
exports["@hydrofoil/talos-core fromDirectories merges resources from multiple graph documents"] = "\n<https://example.com> {\n\t<https://example.com> a <http://schema.org/Thing> ;\n\t\t<http://schema.org/hasPart> <https://example.com/#part>, _:b1, _:namedPart, _:b6 ;\n\t\t<http://schema.org/name> \"Bar environment\" .\n\n\t<https://example.com/#part> <http://schema.org/minValue> \"10\"^^<http://www.w3.org/2001/XMLSchema#integer> ;\n\t\t<http://schema.org/maxValue> \"100\"^^<http://www.w3.org/2001/XMLSchema#integer> .\n\n\t_:b1 <http://schema.org/name> \"totally anonymous\" .\n\n\t_:namedPart <http://schema.org/name> \"Foo part\", \"Bar part\" .\n\n\t_:b6 <http://schema.org/name> \"totally anonymous\" .\n}\n\n";
|
|
2
2
|
|
|
3
|
-
exports["@hydrofoil/talos-core fromDirectories merges resources from dataset and graph documents"] = "<https://example.com/trig/users/john-doe> <
|
|
3
|
+
exports["@hydrofoil/talos-core fromDirectories merges resources from dataset and graph documents"] = "\n<https://example.com/trig/users/john-doe> {\n\t<https://example.com/trig/users/john-doe> a <http://xmlns.com/foaf/0.1/Person> ;\n\t\t<http://www.w3.org/ns/earl#test> \"trig\" ;\n\t\t<http://xmlns.com/foaf/0.1/name> \"John Doe\" .\n}\n\n";
|
|
4
4
|
|
|
5
|
-
exports["@hydrofoil/talos-core fromDirectories merges resources from multiple dataset documents"] = "<https://example.com/trig/users/jane-doe> <
|
|
5
|
+
exports["@hydrofoil/talos-core fromDirectories merges resources from multiple dataset documents"] = "\n<https://example.com/trig/users/jane-doe> {\n\t<https://example.com/trig/users/jane-doe> a <http://xmlns.com/foaf/0.1/Person> ;\n\t\t<http://www.w3.org/ns/earl#test> \"trig\" ;\n\t\t<http://xmlns.com/foaf/0.1/name> \"Jane Doe\" .\n}\n\n";
|
|
6
6
|
|
|
7
|
-
exports["@hydrofoil/talos-core fromDirectories uses the last representation when is marked to replace other envs"] = "<https://example.com/only/one> <http://schema.org/name> \"bar\"
|
|
7
|
+
exports["@hydrofoil/talos-core fromDirectories uses the last representation when is marked to replace other envs"] = "\n<https://example.com/only/one> {\n\t<https://example.com/only/one> <http://schema.org/name> \"bar\" .\n}\n\n";
|
|
8
8
|
|
|
9
|
-
exports["@hydrofoil/talos-core fromDirectories uses the last representation when is marked in another env"] = "<https://example.com/only/two> <http://schema.org/name> \"bar\"
|
|
9
|
+
exports["@hydrofoil/talos-core fromDirectories uses the last representation when is marked in another env"] = "\n<https://example.com/only/two> {\n\t<https://example.com/only/two> <http://schema.org/name> \"bar\" .\n}\n\n";
|
|
10
10
|
|
|
11
|
-
exports["@hydrofoil/talos-core fromDirectories uses the last representation when is marked in a dataset document"] = "<https://example.com/only/three> <http://schema.org/name> \"bar\"
|
|
11
|
+
exports["@hydrofoil/talos-core fromDirectories uses the last representation when is marked in a dataset document"] = "\n<https://example.com/only/three> {\n\t<https://example.com/only/three> <http://schema.org/name> \"bar\" .\n}\n\n";
|
|
12
12
|
|
package/test/index.test.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import url from 'url';
|
|
3
3
|
import { expect } from 'chai';
|
|
4
|
-
import
|
|
5
|
-
import $rdf from '
|
|
6
|
-
import { talosNs } from '../lib/ns.js';
|
|
4
|
+
import formats from '@rdfjs-elements/formats-pretty';
|
|
5
|
+
import $rdf from '../env.js';
|
|
7
6
|
import { fromDirectories } from '../index.js';
|
|
8
7
|
const testDir = url.fileURLToPath(new URL('../../../test-resources', import.meta.url));
|
|
9
8
|
const ns = $rdf.namespace('https://example.com');
|
|
9
|
+
$rdf.formats.import({
|
|
10
|
+
serializers: formats.serializers,
|
|
11
|
+
});
|
|
10
12
|
describe('@hydrofoil/talos-core', () => {
|
|
11
13
|
describe('fromDirectories', () => {
|
|
12
14
|
let dataset;
|
|
@@ -18,41 +20,42 @@ describe('@hydrofoil/talos-core', () => {
|
|
|
18
20
|
];
|
|
19
21
|
dataset = await fromDirectories(dirs, ns().value);
|
|
20
22
|
});
|
|
21
|
-
it('merges resources from multiple graph documents', function () {
|
|
23
|
+
it('merges resources from multiple graph documents', async function () {
|
|
22
24
|
const resource = dataset.match(null, null, null, ns());
|
|
23
|
-
expect(
|
|
25
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this);
|
|
24
26
|
});
|
|
25
|
-
it('merges resources from dataset and graph documents', function () {
|
|
27
|
+
it('merges resources from dataset and graph documents', async function () {
|
|
26
28
|
const resource = dataset.match(null, null, null, ns('/trig/users/john-doe'));
|
|
27
|
-
expect(
|
|
29
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this);
|
|
28
30
|
});
|
|
29
|
-
it('merges resources from multiple dataset documents', function () {
|
|
31
|
+
it('merges resources from multiple dataset documents', async function () {
|
|
30
32
|
const resource = dataset.match(null, null, null, ns('/trig/users/jane-doe'));
|
|
31
|
-
expect(
|
|
33
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this);
|
|
32
34
|
});
|
|
33
35
|
it('marks a resource for "overwrite" by default', () => {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
+
const match = dataset.match(ns(), $rdf.ns.talos.action, null, $rdf.ns.talos.resources);
|
|
37
|
+
const [{ object: action }, ...more] = match;
|
|
38
|
+
expect(action).to.deep.eq($rdf.ns.talos.overwrite);
|
|
36
39
|
expect(more).to.be.empty;
|
|
37
40
|
});
|
|
38
41
|
it('marks a resource for "merge" when prefix is used', () => {
|
|
39
|
-
const datasetCore = dataset.match(ns('/project/creta/user.group/admins'),
|
|
42
|
+
const datasetCore = dataset.match(ns('/project/creta/user.group/admins'), $rdf.ns.talos.action, null, $rdf.ns.talos.resources);
|
|
40
43
|
const [{ object: action }, ...more] = datasetCore;
|
|
41
|
-
expect(action).to.deep.eq(
|
|
44
|
+
expect(action).to.deep.eq($rdf.ns.talos.merge);
|
|
42
45
|
expect(more).to.be.empty;
|
|
43
46
|
});
|
|
44
|
-
it('uses the last representation when is marked to replace other envs', function () {
|
|
47
|
+
it('uses the last representation when is marked to replace other envs', async function () {
|
|
45
48
|
const resource = dataset.match(null, null, null, ns('/only/one'));
|
|
46
|
-
expect(
|
|
49
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this);
|
|
47
50
|
});
|
|
48
|
-
it('uses the last representation when is marked in another env', function () {
|
|
51
|
+
it('uses the last representation when is marked in another env', async function () {
|
|
49
52
|
const resource = dataset.match(null, null, null, ns('/only/two'));
|
|
50
|
-
expect(
|
|
53
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this);
|
|
51
54
|
});
|
|
52
|
-
it('uses the last representation when is marked in a dataset document', function () {
|
|
55
|
+
it('uses the last representation when is marked in a dataset document', async function () {
|
|
53
56
|
const resource = dataset.match(null, null, null, ns('/only/three'));
|
|
54
|
-
expect(
|
|
57
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this);
|
|
55
58
|
});
|
|
56
59
|
});
|
|
57
60
|
});
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluZGV4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQTtBQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzdCLE9BQU8sT0FBTyxNQUFNLGdDQUFnQyxDQUFBO0FBRXBELE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTdDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3RGLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQTtBQUVoRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNsQixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Q0FDakMsQ0FBQyxDQUFBO0FBRUYsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLElBQUksT0FBZ0IsQ0FBQTtRQUVwQixVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEdBQUc7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDekMsQ0FBQTtZQUNELE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSztZQUN4RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFFdEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pGLENBQUMsQ0FBQyxDQUFBO1FBRUYsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEtBQUs7WUFDM0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFBO1lBRTVFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6RixDQUFDLENBQUMsQ0FBQTtRQUVGLEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxLQUFLO1lBQzFELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQTtZQUU1RSxNQUFNLENBQUMsTUFBTSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekYsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQUMsNkNBQTZDLEVBQUUsR0FBRyxFQUFFO1lBQ3JELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN0RixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUE7WUFFM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQTtRQUMxQixDQUFDLENBQUMsQ0FBQTtRQUVGLEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7WUFDMUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzlILE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQTtZQUVqRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFBO1FBQzFCLENBQUMsQ0FBQyxDQUFBO1FBRUYsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEtBQUs7WUFDM0UsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtZQUVqRSxNQUFNLENBQUMsTUFBTSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekYsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSztZQUNwRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1lBRWpFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6RixDQUFDLENBQUMsQ0FBQTtRQUVGLEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxLQUFLO1lBQzNFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUE7WUFFbkUsTUFBTSxDQUFDLE1BQU0sUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pGLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSJ9
|
package/test/index.test.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { DatasetCore } from 'rdf-js'
|
|
2
1
|
import path from 'path'
|
|
3
2
|
import url from 'url'
|
|
4
3
|
import { expect } from 'chai'
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
4
|
+
import formats from '@rdfjs-elements/formats-pretty'
|
|
5
|
+
import type { Dataset } from '@zazuko/env/lib/DatasetExt.js'
|
|
6
|
+
import $rdf from '../env.js'
|
|
8
7
|
import { fromDirectories } from '../index.js'
|
|
9
8
|
|
|
10
9
|
const testDir = url.fileURLToPath(new URL('../../../test-resources', import.meta.url))
|
|
11
10
|
const ns = $rdf.namespace('https://example.com')
|
|
12
11
|
|
|
12
|
+
$rdf.formats.import({
|
|
13
|
+
serializers: formats.serializers,
|
|
14
|
+
})
|
|
15
|
+
|
|
13
16
|
describe('@hydrofoil/talos-core', () => {
|
|
14
17
|
describe('fromDirectories', () => {
|
|
15
|
-
let dataset:
|
|
18
|
+
let dataset: Dataset
|
|
16
19
|
|
|
17
20
|
beforeEach(async () => {
|
|
18
21
|
const dirs = [
|
|
@@ -23,55 +26,56 @@ describe('@hydrofoil/talos-core', () => {
|
|
|
23
26
|
dataset = await fromDirectories(dirs, ns().value)
|
|
24
27
|
})
|
|
25
28
|
|
|
26
|
-
it('merges resources from multiple graph documents', function () {
|
|
29
|
+
it('merges resources from multiple graph documents', async function () {
|
|
27
30
|
const resource = dataset.match(null, null, null, ns())
|
|
28
31
|
|
|
29
|
-
expect(
|
|
32
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this)
|
|
30
33
|
})
|
|
31
34
|
|
|
32
|
-
it('merges resources from dataset and graph documents', function () {
|
|
35
|
+
it('merges resources from dataset and graph documents', async function () {
|
|
33
36
|
const resource = dataset.match(null, null, null, ns('/trig/users/john-doe'))
|
|
34
37
|
|
|
35
|
-
expect(
|
|
38
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this)
|
|
36
39
|
})
|
|
37
40
|
|
|
38
|
-
it('merges resources from multiple dataset documents', function () {
|
|
41
|
+
it('merges resources from multiple dataset documents', async function () {
|
|
39
42
|
const resource = dataset.match(null, null, null, ns('/trig/users/jane-doe'))
|
|
40
43
|
|
|
41
|
-
expect(
|
|
44
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this)
|
|
42
45
|
})
|
|
43
46
|
|
|
44
47
|
it('marks a resource for "overwrite" by default', () => {
|
|
45
|
-
const
|
|
48
|
+
const match = dataset.match(ns(), $rdf.ns.talos.action, null, $rdf.ns.talos.resources)
|
|
49
|
+
const [{ object: action }, ...more] = match
|
|
46
50
|
|
|
47
|
-
expect(action).to.deep.eq(
|
|
51
|
+
expect(action).to.deep.eq($rdf.ns.talos.overwrite)
|
|
48
52
|
expect(more).to.be.empty
|
|
49
53
|
})
|
|
50
54
|
|
|
51
55
|
it('marks a resource for "merge" when prefix is used', () => {
|
|
52
|
-
const datasetCore = dataset.match(ns('/project/creta/user.group/admins'),
|
|
56
|
+
const datasetCore = dataset.match(ns('/project/creta/user.group/admins'), $rdf.ns.talos.action, null, $rdf.ns.talos.resources)
|
|
53
57
|
const [{ object: action }, ...more] = datasetCore
|
|
54
58
|
|
|
55
|
-
expect(action).to.deep.eq(
|
|
59
|
+
expect(action).to.deep.eq($rdf.ns.talos.merge)
|
|
56
60
|
expect(more).to.be.empty
|
|
57
61
|
})
|
|
58
62
|
|
|
59
|
-
it('uses the last representation when is marked to replace other envs', function () {
|
|
63
|
+
it('uses the last representation when is marked to replace other envs', async function () {
|
|
60
64
|
const resource = dataset.match(null, null, null, ns('/only/one'))
|
|
61
65
|
|
|
62
|
-
expect(
|
|
66
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this)
|
|
63
67
|
})
|
|
64
68
|
|
|
65
|
-
it('uses the last representation when is marked in another env', function () {
|
|
69
|
+
it('uses the last representation when is marked in another env', async function () {
|
|
66
70
|
const resource = dataset.match(null, null, null, ns('/only/two'))
|
|
67
71
|
|
|
68
|
-
expect(
|
|
72
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this)
|
|
69
73
|
})
|
|
70
74
|
|
|
71
|
-
it('uses the last representation when is marked in a dataset document', function () {
|
|
75
|
+
it('uses the last representation when is marked in a dataset document', async function () {
|
|
72
76
|
const resource = dataset.match(null, null, null, ns('/only/three'))
|
|
73
77
|
|
|
74
|
-
expect(
|
|
78
|
+
expect(await resource.serialize({ format: 'application/trig' })).to.matchSnapshot(this)
|
|
75
79
|
})
|
|
76
80
|
})
|
|
77
81
|
})
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
-
import
|
|
2
|
+
import rdf from '@zazuko/env-node';
|
|
3
3
|
import toStream from 'into-stream';
|
|
4
4
|
import getStream from 'get-stream';
|
|
5
5
|
import { optionsFromPrefixes } from '../../lib/prefixHandler.js';
|
|
6
6
|
describe('@hydrofoil/talos/lib/prefixHandler', () => {
|
|
7
7
|
function parse(str) {
|
|
8
|
-
return parsers.import('text/turtle', toStream(str));
|
|
8
|
+
return rdf.formats.parsers.import('text/turtle', toStream(str));
|
|
9
9
|
}
|
|
10
10
|
describe('optionsFromPrefixes', () => {
|
|
11
11
|
it('sets options from parsed prefixes', async () => {
|
|
@@ -33,4 +33,4 @@ prefix talos: <another:also%20baz>`);
|
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4SGFuZGxlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJlZml4SGFuZGxlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDN0IsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUE7QUFDbEMsT0FBTyxRQUFRLE1BQU0sYUFBYSxDQUFBO0FBQ2xDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUVoRSxRQUFRLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO0lBQ2xELFNBQVMsS0FBSyxDQUFDLEdBQVc7UUFDeEIsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBaUMsQ0FBQTtJQUNqRyxDQUFDO0lBRUQsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakQsUUFBUTtZQUNSLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtZQUVsQixPQUFPO1lBQ1AsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDOzttQ0FFUSxDQUFDLENBQUE7WUFDOUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUNqRCxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUV2QixPQUFPO1lBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUM5QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ3pELENBQUMsQ0FBQyxDQUFBO1FBRUYsRUFBRSxDQUFDLHdCQUF3QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3RDLFFBQVE7WUFDUixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7WUFFbEIsT0FBTztZQUNQLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO1lBQzNELE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDakQsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7WUFFdkIsT0FBTztZQUNQLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEifQ==
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Stream } from 'stream'
|
|
1
|
+
import { Readable, Stream } from 'stream'
|
|
2
2
|
import { expect } from 'chai'
|
|
3
|
-
import
|
|
3
|
+
import rdf from '@zazuko/env-node'
|
|
4
4
|
import toStream from 'into-stream'
|
|
5
5
|
import getStream from 'get-stream'
|
|
6
6
|
import { optionsFromPrefixes } from '../../lib/prefixHandler.js'
|
|
7
7
|
|
|
8
8
|
describe('@hydrofoil/talos/lib/prefixHandler', () => {
|
|
9
9
|
function parse(str: string) {
|
|
10
|
-
return parsers.import('text/turtle', toStream(str)) as unknown as Stream
|
|
10
|
+
return rdf.formats.parsers.import('text/turtle', toStream(str)) as unknown as Stream & Readable
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
describe('optionsFromPrefixes', () => {
|