@hydrofoil/talos-core 0.2.0 → 0.3.1
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/bootstrap.js +2 -2
- package/env.d.ts +2 -2
- package/index.d.ts +2 -1
- package/index.js +19 -16
- package/lib/QueryProcessor.d.ts +7 -0
- package/lib/QueryProcessor.js +30 -0
- package/lib/applyUpdates.d.ts +1 -1
- package/lib/applyUpdates.js +39 -20
- package/lib/fileStream.d.ts +4 -2
- package/lib/fileStream.js +13 -27
- package/lib/iri.d.ts +1 -0
- package/lib/iri.js +9 -0
- package/lib/prefixHandler.js +1 -1
- package/lib/streamPatchTransform.d.ts +1 -0
- package/lib/streamPatchTransform.js +45 -0
- package/package.json +16 -11
- package/lib/baseIRI.d.ts +0 -1
- package/lib/baseIRI.js +0 -9
package/bootstrap.js
CHANGED
|
@@ -40,6 +40,6 @@ export async function bootstrap({ dataset, store }) {
|
|
|
40
40
|
}
|
|
41
41
|
await store.save(pointer);
|
|
42
42
|
}
|
|
43
|
-
log.info('Graphs bootstrapped:
|
|
43
|
+
log.info('Graphs bootstrapped: ', summary);
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5QyxPQUFPLElBQUksTUFBTSxVQUFVLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFBO0FBTzlCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBYTtJQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ3pFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDakQsTUFBTSxPQUFPLEdBQUc7UUFDZCxPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7S0FDWCxDQUFBO0lBRUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDL0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDbkMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1NBQ3BCLENBQUMsQ0FBQTtRQUVGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0MsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUNqQixHQUFHLENBQUMsa0JBQWtCLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDakMsU0FBUTtRQUNWLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ2pCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxHQUFHLENBQUMsK0JBQStCLFFBQVEsRUFBRSxDQUFDLENBQUE7Z0JBQzlDLE1BQU0sT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQzlDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN6QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sR0FBRyxDQUFDLG1CQUFtQixRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBQ3BDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUNqQixHQUFHLENBQUMsa0JBQWtCLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMzQixDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUM1QyxDQUFDIn0=
|
package/env.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
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/
|
|
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/data-model/Factory.js").default | import("@rdfjs/formats/Factory.js").FormatsFactory | import("@rdfjs/term-map/Factory.js").TermMapFactory | import("clownface/Factory.js").default | import("@rdfjs/term-set/Factory.js").TermSetFactory | import("@rdfjs/traverser/Factory.js").TraverserFactory>, import("@rdfjs/environment/Environment.js").Environment<{
|
|
3
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<
|
|
4
|
+
init(this: import("@rdfjs/environment/Environment.js").Environment<import("@rdfjs/data-model/Factory.js").default | import("@rdfjs/formats/Factory.js").FormatsFactory | import("@rdfjs/term-map/Factory.js").TermMapFactory | import("@zazuko/env/lib/DatasetFactoryExt.js").DatasetFactoryExt<import("@zazuko/env/lib/DatasetExt.js").Dataset>>): void;
|
|
5
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
6
|
export default _default;
|
package/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ declare const ns: import("@rdfjs/namespace").NamespaceBuilder<"resources" | "act
|
|
|
3
3
|
export { ns };
|
|
4
4
|
interface Options {
|
|
5
5
|
includeMetaGraph?: boolean;
|
|
6
|
+
endpoints?: Record<string, string>;
|
|
6
7
|
}
|
|
7
|
-
export declare function fromDirectories(directories: string[], baseIri: string, { includeMetaGraph }?: Options): Promise<Dataset>;
|
|
8
|
+
export declare function fromDirectories(directories: string[], baseIri: string, { includeMetaGraph, endpoints }?: Options): Promise<Dataset>;
|
package/index.js
CHANGED
|
@@ -5,14 +5,15 @@ import $rdf from './env.js';
|
|
|
5
5
|
import log from './lib/log.js';
|
|
6
6
|
import { getPatchedStream } from './lib/fileStream.js';
|
|
7
7
|
import { optionsFromPrefixes } from './lib/prefixHandler.js';
|
|
8
|
-
import { baseIRI } from './lib/baseIRI.js';
|
|
9
8
|
import { applyUpdates } from './lib/applyUpdates.js';
|
|
9
|
+
import { resourcePathFromFilePath } from './lib/iri.js';
|
|
10
10
|
const { talos: ns } = $rdf.ns;
|
|
11
11
|
export { ns };
|
|
12
|
-
export async function fromDirectories(directories, baseIri, { includeMetaGraph
|
|
12
|
+
export async function fromDirectories(directories, baseIri, { includeMetaGraph = true, endpoints = {} } = {}) {
|
|
13
|
+
const baseIriNoSlash = baseIri.replace(/\/$/, '');
|
|
13
14
|
const validDirs = directories.filter(isValidDir);
|
|
14
|
-
const dataset = await validDirs.reduce(toGraphs(baseIri), Promise.resolve($rdf.dataset()));
|
|
15
|
-
const updatedDataset = await applyUpdates(
|
|
15
|
+
const dataset = await validDirs.reduce(toGraphs(new URL(baseIri)), Promise.resolve($rdf.dataset()));
|
|
16
|
+
const updatedDataset = await applyUpdates(baseIriNoSlash, validDirs, dataset, endpoints);
|
|
16
17
|
setDefaultAction(updatedDataset);
|
|
17
18
|
return updatedDataset.filter(({ graph }) => {
|
|
18
19
|
return includeMetaGraph || !graph.equals($rdf.ns.talos.resources);
|
|
@@ -27,35 +28,37 @@ function setDefaultAction(dataset) {
|
|
|
27
28
|
return !action || action.equals($rdf.ns.talos.default);
|
|
28
29
|
});
|
|
29
30
|
metaGraph
|
|
30
|
-
.node(graphsToOverwrite)
|
|
31
|
+
.node($rdf.termSet(graphsToOverwrite))
|
|
31
32
|
.deleteOut($rdf.ns.talos.action)
|
|
32
33
|
.addOut($rdf.ns.talos.action, $rdf.ns.talos.overwrite);
|
|
33
34
|
}
|
|
34
|
-
function toGraphs(
|
|
35
|
+
function toGraphs(baseIri) {
|
|
36
|
+
const baseIriNoSlash = baseIri.toString().replace(/\/$/, '');
|
|
35
37
|
return async function (previousPromise, dir) {
|
|
36
38
|
let previous = await previousPromise;
|
|
37
39
|
const dataset = $rdf.dataset();
|
|
38
|
-
log.debug(
|
|
40
|
+
log.debug(`Processing dir ${dir}`);
|
|
39
41
|
for await (const file of walk(dir)) {
|
|
40
42
|
if (file.endsWith('.ru')) {
|
|
41
43
|
continue;
|
|
42
44
|
}
|
|
43
45
|
const relative = path.relative(dir, file);
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
+
const resourcePath = resourcePathFromFilePath(relative);
|
|
47
|
+
const resourceUrl = $rdf.namedNode(resourcePath === '' ? baseIri.toString() : `${baseIriNoSlash}/${resourcePath}`);
|
|
48
|
+
const parserStream = getPatchedStream(file, dir, baseIriNoSlash, resourcePath);
|
|
46
49
|
if (!parserStream) {
|
|
47
50
|
continue;
|
|
48
51
|
}
|
|
49
|
-
log.debug(
|
|
52
|
+
log.debug(`Parsing ${relative}`);
|
|
50
53
|
const parsedResourceOptions = {};
|
|
51
54
|
parserStream.on('prefix', optionsFromPrefixes(parsedResourceOptions));
|
|
52
55
|
const resources = $rdf.termSet();
|
|
53
56
|
const resourceOptions = $rdf.clownface({ dataset: previous, graph: $rdf.ns.talos.resources });
|
|
54
57
|
try {
|
|
55
58
|
for await (const { subject, predicate, object, ...quad } of parserStream) {
|
|
56
|
-
const graph = quad.graph.equals($rdf.defaultGraph()) ?
|
|
59
|
+
const graph = quad.graph.equals($rdf.defaultGraph()) ? resourceUrl : quad.graph;
|
|
57
60
|
if (!resources.has(graph)) {
|
|
58
|
-
log.debug(
|
|
61
|
+
log.debug(`Found graph ${graph.value}`);
|
|
59
62
|
}
|
|
60
63
|
resources.add(graph);
|
|
61
64
|
dataset.add($rdf.quad(subject, predicate, object, graph));
|
|
@@ -63,7 +66,7 @@ function toGraphs(api) {
|
|
|
63
66
|
}
|
|
64
67
|
catch (e) {
|
|
65
68
|
if (e instanceof Error) {
|
|
66
|
-
log.error(
|
|
69
|
+
log.error(`Failed to parse ${relative}: ${e.message}`);
|
|
67
70
|
}
|
|
68
71
|
}
|
|
69
72
|
resources.forEach(id => {
|
|
@@ -86,13 +89,13 @@ function toGraphs(api) {
|
|
|
86
89
|
}
|
|
87
90
|
function isValidDir(dir) {
|
|
88
91
|
if (!fs.existsSync(dir)) {
|
|
89
|
-
log.warn(
|
|
92
|
+
log.warn(`Skipping path ${dir} which does not exist`);
|
|
90
93
|
return false;
|
|
91
94
|
}
|
|
92
95
|
if (!fs.statSync(dir).isDirectory()) {
|
|
93
|
-
log.warn(
|
|
96
|
+
log.warn(`Skipping path ${dir} which is not a directory`);
|
|
94
97
|
return false;
|
|
95
98
|
}
|
|
96
99
|
return true;
|
|
97
100
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUUxQyxPQUFPLElBQUksTUFBTSxVQUFVLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFdkQsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQTtBQVliLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUFDLFdBQXFCLEVBQUUsT0FBZSxFQUFFLEVBQUUsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLFNBQVMsR0FBRyxFQUFFLEtBQWMsRUFBRTtJQUNySSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNqRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENB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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import Processor from '@hydrofoil/sparql-processor';
|
|
2
|
+
import type { Pattern, ServicePattern } from 'sparqljs';
|
|
3
|
+
export default class extends Processor {
|
|
4
|
+
private readonly endpoints;
|
|
5
|
+
constructor(endpoints: Record<string, string>);
|
|
6
|
+
processService(service: ServicePattern): Pattern;
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Processor from '@hydrofoil/sparql-processor';
|
|
2
|
+
import rdf from '../env.js';
|
|
3
|
+
import log from './log.js';
|
|
4
|
+
const endpointPattern = /urn:endpoint:(?<name>[^:]+)/;
|
|
5
|
+
export default class extends Processor {
|
|
6
|
+
endpoints;
|
|
7
|
+
constructor(endpoints) {
|
|
8
|
+
super(rdf);
|
|
9
|
+
this.endpoints = endpoints;
|
|
10
|
+
}
|
|
11
|
+
processService(service) {
|
|
12
|
+
if (service.name.termType === 'NamedNode' && endpointPattern.test(service.name.value)) {
|
|
13
|
+
const endpointName = service.name.value.match(endpointPattern)?.groups?.name;
|
|
14
|
+
if (endpointName) {
|
|
15
|
+
const endpointUrl = this.endpoints[endpointName];
|
|
16
|
+
if (endpointUrl) {
|
|
17
|
+
return {
|
|
18
|
+
...service,
|
|
19
|
+
name: this.factory.namedNode(endpointUrl),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
log.warn(`Endpoint ${endpointName} not found. Set it using --remote-endpoint ${endpointName}=<url>`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return super.processService(service);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVlcnlQcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJRdWVyeVByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQTtBQUVuRCxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFBO0FBRTFCLE1BQU0sZUFBZSxHQUFHLDZCQUE2QixDQUFBO0FBRXJELE1BQU0sQ0FBQyxPQUFPLE1BQU8sU0FBUSxTQUFTO0lBQ1A7SUFBN0IsWUFBNkIsU0FBaUM7UUFDNUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRGlCLGNBQVMsR0FBVCxTQUFTLENBQXdCO0lBRTlELENBQUM7SUFFUSxjQUFjLENBQUMsT0FBdUI7UUFDN0MsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEYsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUE7WUFDNUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDaEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsT0FBTzt3QkFDTCxHQUFHLE9BQU87d0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztxQkFDMUMsQ0FBQTtnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLFlBQVksOENBQThDLFlBQVksUUFBUSxDQUFDLENBQUE7Z0JBQ3RHLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0NBQ0YifQ==
|
package/lib/applyUpdates.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { DatasetCore } from '@rdfjs/types';
|
|
2
|
-
export declare function applyUpdates(api: string, validDirs: string[], dataset: DatasetCore): Promise<import("@zazuko/env/lib/DatasetExt.js").Dataset>;
|
|
2
|
+
export declare function applyUpdates(api: string, validDirs: string[], dataset: DatasetCore, endpoints: Record<string, string>): Promise<import("@zazuko/env/lib/DatasetExt.js").Dataset>;
|
package/lib/applyUpdates.js
CHANGED
|
@@ -3,12 +3,16 @@ import fs from 'fs';
|
|
|
3
3
|
import { walk } from '@fcostarodrigo/walk';
|
|
4
4
|
import { QueryEngine } from '@comunica/query-sparql';
|
|
5
5
|
import { Store } from 'n3';
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
6
|
+
import { Parser, Generator } from 'sparqljs';
|
|
7
|
+
import toString from 'stream-to-string';
|
|
8
8
|
import $rdf from '../env.js';
|
|
9
9
|
import log from './log.js';
|
|
10
|
-
import {
|
|
11
|
-
|
|
10
|
+
import { resourcePathFromFilePath } from './iri.js';
|
|
11
|
+
import { angleBracketTransform } from './fileStream.js';
|
|
12
|
+
import QueryProcessor from './QueryProcessor.js';
|
|
13
|
+
const generator = new Generator();
|
|
14
|
+
export async function applyUpdates(api, validDirs, dataset, endpoints) {
|
|
15
|
+
const queryProcessor = new QueryProcessor(endpoints);
|
|
12
16
|
const engine = new QueryEngine();
|
|
13
17
|
const store = new Store([...dataset]);
|
|
14
18
|
const results = $rdf.dataset();
|
|
@@ -19,34 +23,49 @@ export async function applyUpdates(api, validDirs, dataset) {
|
|
|
19
23
|
}
|
|
20
24
|
const destination = new Store();
|
|
21
25
|
const relative = path.relative(dir, file);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
+
const resourcePath = resourcePathFromFilePath(relative);
|
|
27
|
+
const baseIRI = api + '/' + resourcePath + '/';
|
|
28
|
+
log.trace(`Applying updates from ${relative}`);
|
|
29
|
+
const query = await toString(fs.createReadStream(file, 'utf-8').pipe(angleBracketTransform(api, resourcePath)));
|
|
30
|
+
if (!hasBaseIRI(query)) {
|
|
31
|
+
log.info(`No BASE clause in ${relative}. Effective base IRI: ${baseIRI}`);
|
|
32
|
+
}
|
|
33
|
+
const parser = new Parser({ baseIRI });
|
|
34
|
+
const algebra = queryProcessor.process(parser.parse(query));
|
|
26
35
|
for (const command of getUpdates(algebra)) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
try {
|
|
37
|
+
await engine.queryVoid(generator.stringify({
|
|
38
|
+
prefixes: algebra.prefixes,
|
|
39
|
+
type: 'update',
|
|
40
|
+
updates: [command],
|
|
41
|
+
}), {
|
|
42
|
+
sources: [destination, store],
|
|
43
|
+
destination,
|
|
44
|
+
baseIRI,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
log.error(`Error applying update from ${relative}: ${error}`);
|
|
49
|
+
}
|
|
32
50
|
}
|
|
33
51
|
results.addAll(destination);
|
|
34
|
-
log.debug(
|
|
52
|
+
log.debug(`Applied updates from ${relative}, added ${destination.size} triples`);
|
|
35
53
|
}
|
|
36
54
|
}
|
|
37
55
|
const result = $rdf.dataset([...dataset, ...results]);
|
|
38
|
-
log.info(
|
|
56
|
+
log.info(`SPARQL updates applied. Triples before: ${store.size}. Triples after: ${result.size}`);
|
|
39
57
|
return result;
|
|
40
58
|
}
|
|
59
|
+
function hasBaseIRI(query) {
|
|
60
|
+
return query.match(/^(?!\s*#)\s*BASE\s+<[^>]*>/m);
|
|
61
|
+
}
|
|
41
62
|
function getUpdates(query) {
|
|
42
63
|
switch (query.type) {
|
|
43
|
-
case
|
|
64
|
+
case 'update':
|
|
44
65
|
return query.updates;
|
|
45
|
-
case types.DELETE_INSERT:
|
|
46
|
-
return [query];
|
|
47
66
|
default:
|
|
48
|
-
log.warn(
|
|
67
|
+
log.warn(`Only update queries are supported, got ${query.type}`);
|
|
49
68
|
return [];
|
|
50
69
|
}
|
|
51
70
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHlVcGRhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwbHlVcGRhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sUUFBUSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUE7QUFDMUIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLHFCQUFxQixDQUFBO0FBRWhELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7QUFFakMsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBVyxFQUFFLFNBQW1CLEVBQUUsT0FBb0IsRUFBRSxTQUFpQztJQUMxSCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUM5QixLQUFLLE1BQU0sR0FB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
|
package/lib/fileStream.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import type { Readable } from 'stream';
|
|
3
|
-
export declare
|
|
2
|
+
export declare const angleBracketTransform: (baseUri: string, resourcePath: string) => any;
|
|
3
|
+
export declare const jsonTransform: (baseUri: string, resourcePath: string) => any;
|
|
4
|
+
export declare const filePatchTransforms: Map<string, (baseUri: string, resourcePath: string) => any>;
|
|
5
|
+
export declare function getPatchedStream(file: string, cwd: string, baseIRI: string, resourcePath: string): Readable | null;
|
package/lib/fileStream.js
CHANGED
|
@@ -5,57 +5,43 @@ import replaceStream from 'replacestream';
|
|
|
5
5
|
import isAbsoluteUrl from 'is-absolute-url';
|
|
6
6
|
import rdf from '../env.js';
|
|
7
7
|
import log from './log.js';
|
|
8
|
-
|
|
8
|
+
import { resolveResourceUri } from './streamPatchTransform.js';
|
|
9
|
+
function replacer(baseUri, resourcePath, s, e = s) {
|
|
10
|
+
const resolve = resolveResourceUri(baseUri, resourcePath);
|
|
9
11
|
return (_, match) => {
|
|
10
|
-
let absolute;
|
|
11
12
|
if (isAbsoluteUrl(match)) {
|
|
12
13
|
return `${s}${match}${e}`;
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
absolute = basePath + match;
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
absolute = new URL(match, resourceUrl).toString();
|
|
19
|
-
if (!match.endsWith('/')) {
|
|
20
|
-
absolute = absolute.replace(/\/?$/, '');
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
const absoluteUrl = new URL(absolute, resourceUrl);
|
|
24
|
-
if (absoluteUrl.pathname === '/' && basePath !== '/') {
|
|
25
|
-
absoluteUrl.pathname = basePath;
|
|
26
|
-
absolute = absoluteUrl.toString();
|
|
27
|
-
}
|
|
28
|
-
return `${s}${absolute}${e}`;
|
|
15
|
+
return `${s}${resolve(match)}${e}`;
|
|
29
16
|
};
|
|
30
17
|
}
|
|
31
|
-
const angleBracketTransform = (
|
|
32
|
-
const jsonTransform = (
|
|
33
|
-
const filePatchTransforms = new Map([
|
|
18
|
+
export const angleBracketTransform = (baseUri, resourcePath) => replaceStream(/<([^>]*)>(?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$)/g, replacer(baseUri, resourcePath, '<', '>'));
|
|
19
|
+
export const jsonTransform = (baseUri, resourcePath) => replaceStream(/"@id": "([^"]*)"/g, replacer(baseUri, resourcePath, '"@id": "', '"'));
|
|
20
|
+
export const filePatchTransforms = new Map([
|
|
34
21
|
['text/turtle', angleBracketTransform],
|
|
35
22
|
['application/n-triples', angleBracketTransform],
|
|
36
23
|
['application/n-quads', angleBracketTransform],
|
|
37
24
|
['application/trig', angleBracketTransform],
|
|
38
25
|
['application/ld+json', jsonTransform],
|
|
39
26
|
]);
|
|
40
|
-
export function getPatchedStream(file, cwd,
|
|
27
|
+
export function getPatchedStream(file, cwd, baseIRI, resourcePath) {
|
|
41
28
|
const relative = path.relative(cwd, file);
|
|
42
|
-
const basePath = new URL(api).pathname;
|
|
43
29
|
const mediaType = mime.lookup(file);
|
|
44
30
|
if (!mediaType) {
|
|
45
|
-
log.warn(
|
|
31
|
+
log.warn(`Could not determine media type for file ${relative}`);
|
|
46
32
|
return null;
|
|
47
33
|
}
|
|
48
34
|
let fileStream = fs.createReadStream(file);
|
|
49
35
|
if (filePatchTransforms.has(mediaType)) {
|
|
50
|
-
fileStream = fileStream.pipe(filePatchTransforms.get(mediaType)(
|
|
36
|
+
fileStream = fileStream.pipe(filePatchTransforms.get(mediaType)(baseIRI, resourcePath));
|
|
51
37
|
}
|
|
52
38
|
const parserStream = rdf.formats.parsers.import(mediaType, fileStream, {
|
|
53
|
-
baseIRI
|
|
39
|
+
baseIRI,
|
|
54
40
|
blankNodePrefix: '',
|
|
55
41
|
});
|
|
56
42
|
if (!parserStream) {
|
|
57
|
-
log.warn(
|
|
43
|
+
log.warn(`Unsupported media type ${mediaType} from ${relative}`);
|
|
58
44
|
}
|
|
59
45
|
return parserStream;
|
|
60
46
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZpbGVTdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEtBQUssSUFBSSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGFBQWEsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFBO0FBQzNCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUU5RCxTQUFTLFFBQVEsQ0FBQyxPQUFlLEVBQUUsWUFBb0IsRUFBRSxDQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkUsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBRXpELE9BQU8sQ0FBQyxDQUFVLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDbkMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQTtRQUMzQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUE7SUFDcEMsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBZSxFQUFFLFlBQW9CLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyw0REFBNEQsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUN0TSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFlLEVBQUUsWUFBb0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBRTVKLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3pDLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDO0lBQ3RDLENBQUMsdUJBQXVCLEVBQUUscUJBQXFCLENBQUM7SUFDaEQsQ0FBQyxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQztJQUM5QyxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDO0lBQzNDLENBQUMscUJBQXFCLEVBQUUsYUFBYSxDQUFDO0NBQ3ZDLENBQUMsQ0FBQTtBQUVGLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLE9BQWUsRUFBRSxZQUFvQjtJQUMvRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ25DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkNBQTJDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDL0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzFDLElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDdkMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFBO0lBQzFGLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRTtRQUNyRSxPQUFPO1FBQ1AsZUFBZSxFQUFFLEVBQUU7S0FDcEIsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLFNBQVMsU0FBUyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFFRCxPQUFPLFlBQTBDLENBQUE7QUFDbkQsQ0FBQyJ9
|
package/lib/iri.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resourcePathFromFilePath(resourcePath: string): string;
|
package/lib/iri.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function resourcePathFromFilePath(resourcePath) {
|
|
2
|
+
resourcePath = resourcePath
|
|
3
|
+
.replace(/\.[^.]+$/, '')
|
|
4
|
+
.replace(/\/?index$/, '');
|
|
5
|
+
return resourcePath === ''
|
|
6
|
+
? ''
|
|
7
|
+
: encodeURI(resourcePath);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXJpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaXJpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxZQUFvQjtJQUMzRCxZQUFZLEdBQUcsWUFBWTtTQUN4QixPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztTQUN2QixPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzNCLE9BQU8sWUFBWSxLQUFLLEVBQUU7UUFDeEIsQ0FBQyxDQUFDLEVBQUU7UUFDSixDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQzdCLENBQUMifQ==
|
package/lib/prefixHandler.js
CHANGED
|
@@ -8,4 +8,4 @@ export function optionsFromPrefixes(options) {
|
|
|
8
8
|
}
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZWZpeEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWdDO0lBQ2xFLE9BQU8sQ0FBQyxNQUFjLEVBQUUsU0FBb0IsRUFBRSxFQUFFO1FBQzlDLElBQUksTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0MsSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMxQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resolveResourceUri(baseUri: string, resourcePath: string): (path: string) => string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export function resolveResourceUri(baseUri, resourcePath) {
|
|
2
|
+
const baseUriUri = new URL(baseUri);
|
|
3
|
+
const basePath = baseUriUri.pathname.split('/').filter(Boolean);
|
|
4
|
+
if (resourcePath.endsWith('/')) {
|
|
5
|
+
throw new Error('Resource URL must not end with a slash');
|
|
6
|
+
}
|
|
7
|
+
if (resourcePath.startsWith('/')) {
|
|
8
|
+
throw new Error('Resource URL must not start with a slash');
|
|
9
|
+
}
|
|
10
|
+
return (path) => {
|
|
11
|
+
if (path === '/') {
|
|
12
|
+
return baseUriUri.toString();
|
|
13
|
+
}
|
|
14
|
+
if ((path === '' || path === '.') && resourcePath === '') {
|
|
15
|
+
return baseUriUri.toString();
|
|
16
|
+
}
|
|
17
|
+
if (path.startsWith('/')) {
|
|
18
|
+
return new URL('/' + mergePaths(basePath, path.split('/').slice(1)).join('/'), baseUri).toString();
|
|
19
|
+
}
|
|
20
|
+
const combinedPath = [...basePath, ...resourcePath.split('/').filter(Boolean)];
|
|
21
|
+
if (path.startsWith('#') || path === '') {
|
|
22
|
+
const url = new URL('/' + combinedPath.join('/'), baseUri);
|
|
23
|
+
if (path) {
|
|
24
|
+
url.hash = path;
|
|
25
|
+
}
|
|
26
|
+
return url.toString();
|
|
27
|
+
}
|
|
28
|
+
return new URL('/' + mergePaths(combinedPath, path.split('/')).join('/'), baseUri).toString();
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function mergePaths(basePath, resourcePath) {
|
|
32
|
+
const result = basePath.slice();
|
|
33
|
+
for (const segment of resourcePath) {
|
|
34
|
+
if (segment === '.') {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (segment === '..') {
|
|
38
|
+
result.pop();
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
result.push(segment);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtUGF0Y2hUcmFuc2Zvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdHJlYW1QYXRjaFRyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFlBQW9CO0lBQ3RFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25DLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUUvRCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVksRUFBRSxFQUFFO1FBQ3RCLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksWUFBWSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3pELE9BQU8sVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQzlCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ3BHLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUM5RSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQzFELElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7WUFDakIsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLFFBQWtCLEVBQUUsWUFBc0I7SUFDNUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQy9CLEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDcEIsU0FBUTtRQUNWLENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDWixTQUFRO1FBQ1YsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydrofoil/talos-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"prepack": "tsc",
|
|
8
|
-
"test": "mocha
|
|
8
|
+
"test": "mocha"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"lib/**/*.js",
|
|
@@ -14,26 +14,28 @@
|
|
|
14
14
|
"*.d.ts"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@comunica/query-sparql": "^
|
|
17
|
+
"@comunica/query-sparql": "^4.2.0",
|
|
18
18
|
"@fcostarodrigo/walk": "^6.0.1",
|
|
19
|
-
"@
|
|
19
|
+
"@hydrofoil/sparql-processor": "^0.1.5",
|
|
20
|
+
"@types/n3": "^1.24.2",
|
|
20
21
|
"@types/rdf-dataset-ext": "^1.0.8",
|
|
21
|
-
"@zazuko/env-node": "^
|
|
22
|
+
"@zazuko/env-node": "^3.0.0",
|
|
22
23
|
"anylogger": "^1.0.11",
|
|
23
24
|
"is-absolute-url": "^4.0.1",
|
|
24
25
|
"is-graph-pointer": "^2.1.0",
|
|
25
|
-
"mime-types": "^
|
|
26
|
-
"n3": "^1.
|
|
26
|
+
"mime-types": "^3.0.1",
|
|
27
|
+
"n3": "^1.25.2",
|
|
27
28
|
"replacestream": "^4.0.3",
|
|
28
|
-
"
|
|
29
|
+
"sparqljs": "^3.7.3",
|
|
30
|
+
"stream-to-string": "^1.2.1"
|
|
29
31
|
},
|
|
30
32
|
"devDependencies": {
|
|
31
33
|
"@rdfjs-elements/formats-pretty": "^0.6.7",
|
|
32
|
-
"@zazuko/env": "^
|
|
33
|
-
"chai": "^
|
|
34
|
+
"@zazuko/env": "^3.0.0",
|
|
35
|
+
"chai": "^5",
|
|
34
36
|
"get-stream": "^9.0.1",
|
|
35
37
|
"into-stream": "^8.0.1",
|
|
36
|
-
"mocha-chai-jest-snapshot": "^1.1.
|
|
38
|
+
"mocha-chai-jest-snapshot": "^1.1.6"
|
|
37
39
|
},
|
|
38
40
|
"repository": {
|
|
39
41
|
"type": "git",
|
|
@@ -42,5 +44,8 @@
|
|
|
42
44
|
},
|
|
43
45
|
"bugs": {
|
|
44
46
|
"url": "https://github.com/hypermedia-app/talos/issues"
|
|
47
|
+
},
|
|
48
|
+
"mocha": {
|
|
49
|
+
"extends": "../../package.json"
|
|
45
50
|
}
|
|
46
51
|
}
|
package/lib/baseIRI.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function baseIRI(resourcePath: string, api: string): string;
|
package/lib/baseIRI.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export function baseIRI(resourcePath, api) {
|
|
2
|
-
resourcePath = resourcePath
|
|
3
|
-
.replace(/\.[^.]+$/, '')
|
|
4
|
-
.replace(/\/?index$/, '');
|
|
5
|
-
return resourcePath === ''
|
|
6
|
-
? encodeURI(api)
|
|
7
|
-
: encodeURI(`${api}/${resourcePath}`);
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUlSSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2VJUkkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLE9BQU8sQ0FBQyxZQUFvQixFQUFFLEdBQVc7SUFDdkQsWUFBWSxHQUFHLFlBQVk7U0FDeEIsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7U0FDdkIsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMzQixPQUFPLFlBQVksS0FBSyxFQUFFO1FBQ3hCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQTtBQUN6QyxDQUFDIn0=
|