@hydrofoil/talos-core 0.1.1 → 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 CHANGED
@@ -1,5 +1,12 @@
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
+
3
10
  ## 0.1.1
4
11
 
5
12
  ### Patch 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  import { TalosNsFactory } from './lib/ns.js';
2
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/DatasetFactory.js").FactoryMethod<import("@zazuko/env/lib/DatasetExt.js").Dataset>;
3
+ dataset: import("@zazuko/env/lib/DatasetFactoryExt.js").FactoryMethod<import("@zazuko/env/lib/DatasetExt.js").Dataset>;
4
4
  init(this: import("@rdfjs/environment/Environment.js").Environment<any>): 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydrofoil/talos-core",
3
- "version": "0.1.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
- "@zazuko/env-node": "^2.1.2",
12
+ "@zazuko/env-node": "^2.1.3",
13
13
  "anylogger": "^1.1.0-beta.5",
14
14
  "is-absolute-url": "^4.0.1",
15
+ "is-graph-pointer": "^2.1.0",
15
16
  "mime-types": "^2.1.35",
17
+ "rdf-dataset-ext": "^1.0.1",
16
18
  "replacestream": "^4.0.3"
17
19
  },
18
20
  "devDependencies": {
19
21
  "@rdfjs-elements/formats-pretty": "^0.6.7",
20
- "@zazuko/env": "^2",
22
+ "@zazuko/env": "^2.2.1",
21
23
  "chai": "^4.3.8",
22
- "get-stream": "^8.0.1",
23
- "into-stream": "^8.0.0"
24
+ "get-stream": "^9.0.1",
25
+ "into-stream": "^8.0.1"
24
26
  },
25
27
  "repository": {
26
28
  "type": "git",