@hydrofoil/talos-core 0.1.8 → 0.3.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/bootstrap.d.ts CHANGED
@@ -1,9 +1,8 @@
1
- import type { NamedNode, DatasetCore } from '@rdfjs/types';
1
+ import type { DatasetCore } from '@rdfjs/types';
2
2
  import type { ResourceStore } from '@hydrofoil/resource-store';
3
3
  type Bootstrap = {
4
4
  store: ResourceStore;
5
5
  dataset: DatasetCore;
6
- apiUri?: NamedNode;
7
6
  };
8
- export declare function bootstrap({ dataset, apiUri, store }: Bootstrap): Promise<void>;
7
+ export declare function bootstrap({ dataset, store }: Bootstrap): Promise<void>;
9
8
  export {};
package/bootstrap.js CHANGED
@@ -1,9 +1,14 @@
1
1
  import { isNamedNode } from 'is-graph-pointer';
2
2
  import $rdf from './env.js';
3
3
  import log from './lib/log.js';
4
- export async function bootstrap({ dataset, apiUri, store }) {
4
+ export async function bootstrap({ dataset, store }) {
5
5
  const graph = $rdf.clownface({ dataset, graph: $rdf.ns.talos.resources });
6
6
  const resources = graph.has($rdf.ns.talos.action);
7
+ const summary = {
8
+ created: 0,
9
+ updated: 0,
10
+ skipped: 0,
11
+ };
7
12
  for (const resource of resources.toArray().filter(isNamedNode)) {
8
13
  const resourceData = [...dataset.match(null, null, null, resource.term)]
9
14
  .map(({ subject, predicate, object }) => $rdf.quad(subject, predicate, object));
@@ -11,29 +16,30 @@ export async function bootstrap({ dataset, apiUri, store }) {
11
16
  dataset: $rdf.dataset(resourceData),
12
17
  term: resource.term,
13
18
  });
14
- if (apiUri) {
15
- pointer.addOut($rdf.ns.hydra.apiDocumentation, apiUri);
16
- }
17
19
  const action = resource.out($rdf.ns.talos.action).term;
18
20
  const exists = await store.exists(pointer.term);
19
21
  if (exists && $rdf.ns.talos.skip.equals(action)) {
20
- log(`Skipping resource ${resource}`);
22
+ summary.skipped++;
23
+ log(`Skipping graph ${resource}`);
21
24
  continue;
22
25
  }
23
26
  if (exists) {
27
+ summary.updated++;
24
28
  if ($rdf.ns.talos.merge.equals(action)) {
25
- log(`Merging existing resource ${resource}`);
29
+ log(`Merging with existing graph ${resource}`);
26
30
  const current = await store.load(pointer.term);
27
31
  pointer.dataset.addAll(current.dataset);
28
32
  }
29
33
  else {
30
- log(`Replacing resource ${resource}`);
34
+ log(`Replacing graph ${resource}`);
31
35
  }
32
36
  }
33
37
  else {
34
- log(`Creating resource ${resource}`);
38
+ summary.created++;
39
+ log(`Creating graph ${resource}`);
35
40
  }
36
41
  await store.save(pointer);
37
42
  }
43
+ log.info('Graphs bootstrapped: ', summary);
38
44
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5QyxPQUFPLElBQUksTUFBTSxVQUFVLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFBO0FBUTlCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWE7SUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUN6RSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUM5RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckUsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUNqRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNuQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7U0FDcEIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQ3ZEO1FBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9DLEdBQUcsQ0FBQyxxQkFBcUIsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUNwQyxTQUFRO1NBQ1Q7UUFFRCxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDdEMsR0FBRyxDQUFDLDZCQUE2QixRQUFRLEVBQUUsQ0FBQyxDQUFBO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUM5QyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7YUFDeEM7aUJBQU07Z0JBQ0wsR0FBRyxDQUFDLHNCQUFzQixRQUFRLEVBQUUsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7YUFBTTtZQUNMLEdBQUcsQ0FBQyxxQkFBcUIsUUFBUSxFQUFFLENBQUMsQ0FBQTtTQUNyQztRQUVELE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtLQUMxQjtBQUNILENBQUMifQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5QyxPQUFPLElBQUksTUFBTSxVQUFVLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFBO0FBTzlCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBYTtJQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ3pFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDakQsTUFBTSxPQUFPLEdBQUc7UUFDZCxPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7S0FDWCxDQUFBO0lBRUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzlELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyRSxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQ2pGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ25DLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtTQUNwQixDQUFDLENBQUE7UUFFRixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUN0RCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9DLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0MsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ2pCLEdBQUcsQ0FBQyxrQkFBa0IsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUNqQyxTQUFRO1NBQ1Q7UUFFRCxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUNqQixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3RDLEdBQUcsQ0FBQywrQkFBK0IsUUFBUSxFQUFFLENBQUMsQ0FBQTtnQkFDOUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDOUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3hDO2lCQUFNO2dCQUNMLEdBQUcsQ0FBQyxtQkFBbUIsUUFBUSxFQUFFLENBQUMsQ0FBQTthQUNuQztTQUNGO2FBQU07WUFDTCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDakIsR0FBRyxDQUFDLGtCQUFrQixRQUFRLEVBQUUsQ0FBQyxDQUFBO1NBQ2xDO1FBRUQsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQzFCO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUM1QyxDQUFDIn0=
package/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import type { Dataset } from '@zazuko/env/lib/DatasetExt.js';
2
2
  declare const ns: import("@rdfjs/namespace").NamespaceBuilder<"resources" | "action" | "default" | "overwrite" | "skip" | "merge" | "environmentRepresentation" | "replace">;
3
3
  export { ns };
4
- export declare function fromDirectories(directories: string[], api: string): Promise<Dataset>;
4
+ interface Options {
5
+ includeMetaGraph?: boolean;
6
+ }
7
+ export declare function fromDirectories(directories: string[], baseIri: string, { includeMetaGraph }?: Options): Promise<Dataset>;
package/index.js CHANGED
@@ -5,52 +5,60 @@ 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, api) {
12
+ export async function fromDirectories(directories, baseIri, { includeMetaGraph } = { includeMetaGraph: true }) {
13
+ const baseIriNoSlash = baseIri.replace(/\/$/, '');
13
14
  const validDirs = directories.filter(isValidDir);
14
- const dataset = await validDirs.reduce(toGraphs(api), Promise.resolve($rdf.dataset()));
15
- const updatedDataset = await applyUpdates(api, validDirs, dataset);
15
+ const dataset = await validDirs.reduce(toGraphs(new URL(baseIri)), Promise.resolve($rdf.dataset()));
16
+ const updatedDataset = await applyUpdates(baseIriNoSlash, validDirs, dataset);
16
17
  setDefaultAction(updatedDataset);
17
- return updatedDataset;
18
+ return updatedDataset.filter(({ graph }) => {
19
+ return includeMetaGraph || !graph.equals($rdf.ns.talos.resources);
20
+ });
18
21
  }
19
22
  function setDefaultAction(dataset) {
20
23
  const metaGraph = $rdf.clownface({ dataset, graph: $rdf.ns.talos.resources });
21
- const resourcesToOverwrite = [...dataset]
24
+ const graphsToOverwrite = [...dataset]
22
25
  .map(({ graph }) => graph)
23
26
  .filter(graph => {
24
27
  const action = metaGraph.node(graph).out($rdf.ns.talos.action).term;
25
28
  return !action || action.equals($rdf.ns.talos.default);
26
29
  });
27
30
  metaGraph
28
- .node(resourcesToOverwrite)
31
+ .node(graphsToOverwrite)
29
32
  .deleteOut($rdf.ns.talos.action)
30
33
  .addOut($rdf.ns.talos.action, $rdf.ns.talos.overwrite);
31
34
  }
32
- function toGraphs(api) {
35
+ function toGraphs(baseIri) {
36
+ const baseIriNoSlash = baseIri.toString().replace(/\/$/, '');
33
37
  return async function (previousPromise, dir) {
34
38
  let previous = await previousPromise;
35
39
  const dataset = $rdf.dataset();
36
- log.debug('Processing dir %s', dir);
40
+ log.debug(`Processing dir ${dir}`);
37
41
  for await (const file of walk(dir)) {
42
+ if (file.endsWith('.ru')) {
43
+ continue;
44
+ }
38
45
  const relative = path.relative(dir, file);
39
- const url = baseIRI(relative, api);
40
- const parserStream = getPatchedStream(file, dir, api, url);
46
+ const resourcePath = resourcePathFromFilePath(relative);
47
+ const resourceUrl = $rdf.namedNode(resourcePath === '' ? baseIri.toString() : `${baseIriNoSlash}/${resourcePath}`);
48
+ const parserStream = getPatchedStream(file, dir, baseIriNoSlash, resourcePath);
41
49
  if (!parserStream) {
42
50
  continue;
43
51
  }
44
- log.debug('Parsing %s', relative);
52
+ log.debug(`Parsing ${relative}`);
45
53
  const parsedResourceOptions = {};
46
54
  parserStream.on('prefix', optionsFromPrefixes(parsedResourceOptions));
47
55
  const resources = $rdf.termSet();
48
56
  const resourceOptions = $rdf.clownface({ dataset: previous, graph: $rdf.ns.talos.resources });
49
57
  try {
50
58
  for await (const { subject, predicate, object, ...quad } of parserStream) {
51
- const graph = quad.graph.equals($rdf.defaultGraph()) ? $rdf.namedNode(url) : quad.graph;
59
+ const graph = quad.graph.equals($rdf.defaultGraph()) ? resourceUrl : quad.graph;
52
60
  if (!resources.has(graph)) {
53
- log.debug('Parsed resource %s', graph.value);
61
+ log.debug(`Found graph ${graph.value}`);
54
62
  }
55
63
  resources.add(graph);
56
64
  dataset.add($rdf.quad(subject, predicate, object, graph));
@@ -58,7 +66,7 @@ function toGraphs(api) {
58
66
  }
59
67
  catch (e) {
60
68
  if (e instanceof Error) {
61
- log('Failed to parse %s: %s', relative, e.message);
69
+ log.error(`Failed to parse ${relative}: ${e.message}`);
62
70
  }
63
71
  }
64
72
  resources.forEach(id => {
@@ -81,13 +89,13 @@ function toGraphs(api) {
81
89
  }
82
90
  function isValidDir(dir) {
83
91
  if (!fs.existsSync(dir)) {
84
- log('Skipping path %s which does not exist', dir);
92
+ log.warn(`Skipping path ${dir} which does not exist`);
85
93
  return false;
86
94
  }
87
95
  if (!fs.statSync(dir).isDirectory()) {
88
- log('Skipping path %s which is not a directory', dir);
96
+ log.warn(`Skipping path ${dir} which is not a directory`);
89
97
  return false;
90
98
  }
91
99
  return true;
92
100
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUUxQyxPQUFPLElBQUksTUFBTSxVQUFVLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFcEQsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQTtBQU9iLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUFDLFdBQXFCLEVBQUUsR0FBVztJQUN0RSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3RGLE1BQU0sY0FBYyxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFFbEUsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFaEMsT0FBTyxjQUFjLENBQUE7QUFDdkIsQ0FBQztBQUVE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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUUxQyxPQUFPLElBQUksTUFBTSxVQUFVLENBQUE7QUFDM0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFdkQsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQTtBQVdiLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUFDLFdBQXFCLEVBQUUsT0FBZSxFQUFFLEVBQUUsZ0JBQWdCLEtBQWMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUU7SUFDdEksTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ25H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
@@ -5,9 +5,11 @@ import { QueryEngine } from '@comunica/query-sparql';
5
5
  import { Store } from 'n3';
6
6
  import { translate } from 'sparqlalgebrajs';
7
7
  import { types } from 'sparqlalgebrajs/lib/algebra.js';
8
+ import toString from 'stream-to-string';
8
9
  import $rdf from '../env.js';
9
10
  import log from './log.js';
10
- import { baseIRI as getBaseIRI } from './baseIRI.js';
11
+ import { resourcePathFromFilePath } from './iri.js';
12
+ import { angleBracketTransform } from './fileStream.js';
11
13
  export async function applyUpdates(api, validDirs, dataset) {
12
14
  const engine = new QueryEngine();
13
15
  const store = new Store([...dataset]);
@@ -19,9 +21,13 @@ export async function applyUpdates(api, validDirs, dataset) {
19
21
  }
20
22
  const destination = new Store();
21
23
  const relative = path.relative(dir, file);
22
- const baseIRI = getBaseIRI(relative, api);
23
- log.debug('Applying updates from %s, dataset size %s', relative, store.size);
24
- const query = fs.readFileSync(file, 'utf-8');
24
+ const resourcePath = resourcePathFromFilePath(relative);
25
+ const baseIRI = api + '/' + resourcePath + '/';
26
+ log.trace(`Applying updates from ${relative}`);
27
+ const query = await toString(fs.createReadStream(file, 'utf-8').pipe(angleBracketTransform(api, resourcePath)));
28
+ if (!hasBaseIRI(query)) {
29
+ log.info(`No BASE clause in ${relative}. Effective base IRI: ${baseIRI}`);
30
+ }
25
31
  const algebra = translate(query, { quads: true, baseIRI });
26
32
  for (const command of getUpdates(algebra)) {
27
33
  await engine.queryVoid(command, {
@@ -30,11 +36,16 @@ export async function applyUpdates(api, validDirs, dataset) {
30
36
  baseIRI,
31
37
  });
32
38
  }
33
- log.debug('Applied updates from %s, dataset size %s', relative, store.size);
34
39
  results.addAll(destination);
40
+ log.debug(`Applied updates from ${relative}, added ${destination.size} triples`);
35
41
  }
36
42
  }
37
- return $rdf.dataset([...dataset, ...results]);
43
+ const result = $rdf.dataset([...dataset, ...results]);
44
+ log.info(`SPARQL updates applied. Triples before: ${store.size}. Triples after: ${result.size}`);
45
+ return result;
46
+ }
47
+ function hasBaseIRI(query) {
48
+ return query.match(/^(?!\s*#)\s*BASE\s+<[^>]*>/m);
38
49
  }
39
50
  function getUpdates(query) {
40
51
  switch (query.type) {
@@ -43,8 +54,8 @@ function getUpdates(query) {
43
54
  case types.DELETE_INSERT:
44
55
  return [query];
45
56
  default:
46
- log.debug('Only update queries are allowed');
57
+ log.warn(`Only update queries are supported, got ${query.type}`);
47
58
  return [];
48
59
  }
49
60
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHlVcGRhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwbHlVcGRhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRTFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDdEQsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUMxQixPQUFPLEVBQUUsT0FBTyxJQUFJLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUVwRCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxHQUFXLEVBQUUsU0FBbUIsRUFBRSxPQUFvQjtJQUN2RixNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRTtRQUMzQixJQUFJLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3pCLFNBQVE7YUFDVDtZQUNELE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7WUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUN6QyxHQUFHLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDNUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFFNUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUMxRCxLQUFLLE1BQU0sT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekMsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtvQkFDOUIsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztvQkFDN0IsV0FBVztvQkFDWCxPQUFPO2lCQUNSLENBQUMsQ0FBQTthQUNIO1lBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzNFLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDNUI7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBZ0I7SUFDbEMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ2xCLEtBQUssS0FBSyxDQUFDLGdCQUFnQjtZQUN6QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFDdEIsS0FBSyxLQUFLLENBQUMsYUFBYTtZQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEI7WUFDRSxHQUFHLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7WUFDNUMsT0FBTyxFQUFFLENBQUE7S0FDWjtBQUNILENBQUMifQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHlVcGRhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwbHlVcGRhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRTFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDdEQsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUMxQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFdkQsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBVyxFQUFFLFNBQW1CLEVBQUUsT0FBb0I7SUFDdkYsTUFBTSxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQTtJQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUU7UUFDM0IsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxJQUFJLENB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
@@ -1,3 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import type { Readable } from 'stream';
3
- export declare function getPatchedStream(file: string, cwd: string, api: string, resourceUrl: string): Readable | null;
3
+ export declare const angleBracketTransform: (baseUri: string, resourcePath: string) => any;
4
+ export declare const jsonTransform: (baseUri: string, resourcePath: string) => any;
5
+ export declare const filePatchTransforms: Map<string, (baseUri: string, resourcePath: string) => any>;
6
+ 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
- function replacer(basePath, resourceUrl, s, e = s) {
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
- if (match.startsWith('/') && basePath !== '/') {
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 = (basePath, resourceUrl) => replaceStream(/<([^>]+)>(?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$)/g, replacer(basePath, resourceUrl, '<', '>'));
32
- const jsonTransform = (basePath, resourceUrl) => replaceStream(/"([./][^"]+)"/g, replacer(basePath, resourceUrl, '"'));
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, api, resourceUrl) {
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('Could not determine media type for file %s', relative);
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)(basePath, resourceUrl));
36
+ fileStream = fileStream.pipe(filePatchTransforms.get(mediaType)(baseIRI, resourcePath));
51
37
  }
52
38
  const parserStream = rdf.formats.parsers.import(mediaType, fileStream, {
53
- baseIRI: resourceUrl,
39
+ baseIRI,
54
40
  blankNodePrefix: '',
55
41
  });
56
42
  if (!parserStream) {
57
- log('Unsupported media type %s from %s', mediaType, relative);
43
+ log.warn(`Unsupported media type ${mediaType} from ${relative}`);
58
44
  }
59
45
  return parserStream;
60
46
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZpbGVTdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEtBQUssSUFBSSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGFBQWEsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFBO0FBQzNCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUUxQixTQUFTLFFBQVEsQ0FBQyxRQUFnQixFQUFFLFdBQW1CLEVBQUUsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3ZFLE9BQU8sQ0FBQyxDQUFVLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDbkMsSUFBSSxRQUFnQixDQUFBO1FBQ3BCLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFBO1NBQzFCO1FBRUQsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsS0FBSyxHQUFHLEVBQUU7WUFDN0MsUUFBUSxHQUFHLFFBQVEsR0FBRyxLQUFLLENBQUE7U0FDNUI7YUFBTTtZQUNMLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7WUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTthQUN4QztTQUNGO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFF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
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZpbGVTdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEtBQUssSUFBSSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGFBQWEsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFBO0FBQzNCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUU5RCxTQUFTLFFBQVEsQ0FBQyxPQUFlLEVBQUUsWUFBb0IsRUFBRSxDQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDdkUsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBRXpELE9BQU8sQ0FBQyxDQUFVLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDbkMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUE7U0FDMUI7UUFFRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtJQUNwQyxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsWUFBb0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLDREQUE0RCxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3RNLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWUsRUFBRSxZQUFvQixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFFNUosTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDekMsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUM7SUFDdEMsQ0FBQyx1QkFBdUIsRUFBRSxxQkFBcUIsQ0FBQztJQUNoRCxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDO0lBQzlDLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUM7SUFDM0MsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUM7Q0FDdkMsQ0FBQyxDQUFBO0FBRUYsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVksRUFBRSxHQUFXLEVBQUUsT0FBZSxFQUFFLFlBQW9CO0lBQy9GLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkNBQTJDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDL0QsT0FBTyxJQUFJLENBQUE7S0FDWjtJQUVELElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMxQyxJQUFJLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN0QyxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUE7S0FDekY7SUFFRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRTtRQUNyRSxPQUFPO1FBQ1AsZUFBZSxFQUFFLEVBQUU7S0FDcEIsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFlBQVksRUFBRTtRQUNqQixHQUFHLENBQUMsSUFBSSxDQUFDLDBCQUEwQixTQUFTLFNBQVMsUUFBUSxFQUFFLENBQUMsQ0FBQTtLQUNqRTtJQUVELE9BQU8sWUFBMEMsQ0FBQTtBQUNuRCxDQUFDIn0=
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/log.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- declare const _default: import("anylogger").Logger;
1
+ import type { BaseLevels } from 'anylogger';
2
+ import Debugger from 'anylogger';
3
+ declare const _default: Debugger.Logger<BaseLevels>;
2
4
  export default _default;
package/lib/log.js CHANGED
@@ -1,3 +1,4 @@
1
1
  import Debugger from 'anylogger';
2
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
3
  export default Debugger('talos');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQTtBQUVoQyxlQUFlLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQSJ9
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQTtBQUVoQyw4REFBOEQ7QUFDOUQsZUFBZ0IsUUFBeUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtUGF0Y2hUcmFuc2Zvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdHJlYW1QYXRjaFRyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFlBQW9CO0lBQ3RFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25DLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUUvRCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0tBQzFEO0lBQ0QsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQTtLQUM1RDtJQUVELE9BQU8sQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUN0QixJQUFJLElBQUksS0FBSyxHQUFHLEVBQUU7WUFDaEIsT0FBTyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUE7U0FDN0I7UUFDRCxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksWUFBWSxLQUFLLEVBQUUsRUFBRTtZQUN4RCxPQUFPLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtTQUM3QjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QixPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1NBQ25HO1FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDOUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDMUQsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7YUFDaEI7WUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtTQUN0QjtRQUVELE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMvRixDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsUUFBa0IsRUFBRSxZQUFzQjtJQUM1RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDL0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxZQUFZLEVBQUU7UUFDbEMsSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFO1lBQ25CLFNBQVE7U0FDVDtRQUNELElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtZQUNwQixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDWixTQUFRO1NBQ1Q7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQ3JCO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydrofoil/talos-core",
3
- "version": "0.1.8",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -14,26 +14,27 @@
14
14
  "*.d.ts"
15
15
  ],
16
16
  "dependencies": {
17
- "@comunica/query-sparql": "^3.2.1",
17
+ "@comunica/query-sparql": "^4.0.2",
18
18
  "@fcostarodrigo/walk": "^6.0.1",
19
- "@types/n3": "^1.16.4",
19
+ "@types/n3": "^1.16.5",
20
20
  "@types/rdf-dataset-ext": "^1.0.8",
21
21
  "@zazuko/env-node": "^2.1.3",
22
- "anylogger": "^1.1.0-beta.5",
22
+ "anylogger": "^1.0.11",
23
23
  "is-absolute-url": "^4.0.1",
24
24
  "is-graph-pointer": "^2.1.0",
25
25
  "mime-types": "^2.1.35",
26
- "n3": "^1.20.4",
26
+ "n3": "^1.21.0",
27
27
  "replacestream": "^4.0.3",
28
- "sparqlalgebrajs": "^4.3.8"
28
+ "sparqlalgebrajs": "^4.3.8",
29
+ "stream-to-string": "^1.2.1"
29
30
  },
30
31
  "devDependencies": {
31
32
  "@rdfjs-elements/formats-pretty": "^0.6.7",
32
- "@zazuko/env": "^2.2.1",
33
- "chai": "^4.4.1",
33
+ "@zazuko/env": "^2.4.2",
34
+ "chai": "^5",
34
35
  "get-stream": "^9.0.1",
35
36
  "into-stream": "^8.0.1",
36
- "mocha-chai-jest-snapshot": "^1.1.4"
37
+ "mocha-chai-jest-snapshot": "^1.1.6"
37
38
  },
38
39
  "repository": {
39
40
  "type": "git",
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=