@_linked/core 2.6.0-next.20260509053822 → 2.6.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/CHANGELOG.md +54 -4
- package/README.md +36 -0
- package/lib/cjs/queries/queryDispatch.js +1 -1
- package/lib/cjs/queries/queryDispatch.js.map +1 -1
- package/lib/cjs/shapes/SHACL.d.ts +13 -0
- package/lib/cjs/shapes/SHACL.js +53 -5
- package/lib/cjs/shapes/SHACL.js.map +1 -1
- package/lib/cjs/sparql/{SparqlStore.d.ts → SparqlDataset.d.ts} +6 -5
- package/lib/cjs/sparql/{SparqlStore.js → SparqlDataset.js} +9 -8
- package/lib/cjs/sparql/SparqlDataset.js.map +1 -0
- package/lib/cjs/sparql/index.d.ts +1 -1
- package/lib/cjs/sparql/index.js +5 -4
- package/lib/cjs/sparql/index.js.map +1 -1
- package/lib/cjs/sparql/irToAlgebra.js +237 -41
- package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
- package/lib/cjs/test-helpers/FusekiStore.d.ts +4 -4
- package/lib/cjs/test-helpers/FusekiStore.js +4 -4
- package/lib/cjs/test-helpers/FusekiStore.js.map +1 -1
- package/lib/cjs/test-helpers/fuseki-test-store.js +3 -0
- package/lib/cjs/test-helpers/fuseki-test-store.js.map +1 -1
- package/lib/cjs/utils/LinkedFileStorage.d.ts +3 -3
- package/lib/cjs/utils/LinkedFileStorage.js +21 -13
- package/lib/cjs/utils/LinkedFileStorage.js.map +1 -1
- package/lib/cjs/utils/LinkedStorage.d.ts +25 -9
- package/lib/cjs/utils/LinkedStorage.js +63 -44
- package/lib/cjs/utils/LinkedStorage.js.map +1 -1
- package/lib/cjs/utils/loadStores.d.ts +34 -0
- package/lib/cjs/utils/loadStores.js +101 -0
- package/lib/cjs/utils/loadStores.js.map +1 -0
- package/lib/cjs/utils/parseDatasetsConfig.d.ts +49 -0
- package/lib/cjs/utils/parseDatasetsConfig.js +110 -0
- package/lib/cjs/utils/parseDatasetsConfig.js.map +1 -0
- package/lib/esm/queries/queryDispatch.js +1 -1
- package/lib/esm/queries/queryDispatch.js.map +1 -1
- package/lib/esm/shapes/SHACL.d.ts +13 -0
- package/lib/esm/shapes/SHACL.js +53 -5
- package/lib/esm/shapes/SHACL.js.map +1 -1
- package/lib/esm/sparql/{SparqlStore.d.ts → SparqlDataset.d.ts} +6 -5
- package/lib/esm/sparql/{SparqlStore.js → SparqlDataset.js} +8 -6
- package/lib/esm/sparql/SparqlDataset.js.map +1 -0
- package/lib/esm/sparql/index.d.ts +1 -1
- package/lib/esm/sparql/index.js +2 -2
- package/lib/esm/sparql/index.js.map +1 -1
- package/lib/esm/sparql/irToAlgebra.js +237 -41
- package/lib/esm/sparql/irToAlgebra.js.map +1 -1
- package/lib/esm/test-helpers/FusekiStore.d.ts +4 -4
- package/lib/esm/test-helpers/FusekiStore.js +4 -4
- package/lib/esm/test-helpers/FusekiStore.js.map +1 -1
- package/lib/esm/test-helpers/fuseki-test-store.js +3 -0
- package/lib/esm/test-helpers/fuseki-test-store.js.map +1 -1
- package/lib/esm/utils/LinkedFileStorage.d.ts +3 -3
- package/lib/esm/utils/LinkedFileStorage.js +21 -13
- package/lib/esm/utils/LinkedFileStorage.js.map +1 -1
- package/lib/esm/utils/LinkedStorage.d.ts +25 -9
- package/lib/esm/utils/LinkedStorage.js +63 -44
- package/lib/esm/utils/LinkedStorage.js.map +1 -1
- package/lib/esm/utils/loadStores.d.ts +34 -0
- package/lib/esm/utils/loadStores.js +65 -0
- package/lib/esm/utils/loadStores.js.map +1 -0
- package/lib/esm/utils/parseDatasetsConfig.d.ts +49 -0
- package/lib/esm/utils/parseDatasetsConfig.js +107 -0
- package/lib/esm/utils/parseDatasetsConfig.js.map +1 -0
- package/package.json +1 -1
- package/lib/cjs/sparql/SparqlStore.js.map +0 -1
- package/lib/esm/sparql/SparqlStore.js.map +0 -1
|
@@ -2,18 +2,30 @@ import { CoreMap } from '../collections/CoreMap.js';
|
|
|
2
2
|
import { CoreSet } from '../collections/CoreSet.js';
|
|
3
3
|
import { setQueryDispatch } from '../queries/queryDispatch.js';
|
|
4
4
|
import { getShapeClass } from './ShapeClass.js';
|
|
5
|
+
/**
|
|
6
|
+
* Primary routing layer (arch-04 §The IDataset abstraction).
|
|
7
|
+
*
|
|
8
|
+
* Resolves an incoming Linked Query to the IDataset that should handle it,
|
|
9
|
+
* based on the query's target shape. Composite IDatasets (gateways, routers,
|
|
10
|
+
* forwarders, resolvers) plug in here just like storage IDatasets do.
|
|
11
|
+
*
|
|
12
|
+
* The "Dataset" naming aligns with the IDataset contract. Earlier "Store"
|
|
13
|
+
* names were renamed in phase-1 — see docs/plans/002-phase-1-create-user-project-flow.md.
|
|
14
|
+
*/
|
|
5
15
|
export class LinkedStorage {
|
|
6
16
|
static isInitialised() {
|
|
7
|
-
return !!this.
|
|
17
|
+
return !!this.defaultDataset;
|
|
8
18
|
}
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
/** The catch-all IDataset for shapes with no explicit mapping. */
|
|
20
|
+
static getDefaultDataset() {
|
|
21
|
+
return this.defaultDataset;
|
|
11
22
|
}
|
|
12
|
-
|
|
23
|
+
/** Set the default IDataset (catch-all for shapes with no explicit mapping). */
|
|
24
|
+
static setDefaultDataset(dataset) {
|
|
13
25
|
var _a;
|
|
14
|
-
this.
|
|
15
|
-
if ((_a = this.
|
|
16
|
-
this.
|
|
26
|
+
this.defaultDataset = dataset;
|
|
27
|
+
if ((_a = this.defaultDataset) === null || _a === void 0 ? void 0 : _a.init) {
|
|
28
|
+
this.defaultDataset.init();
|
|
17
29
|
}
|
|
18
30
|
setQueryDispatch({
|
|
19
31
|
selectQuery: (q) => this.selectQuery(q),
|
|
@@ -22,78 +34,85 @@ export class LinkedStorage {
|
|
|
22
34
|
deleteQuery: (q) => this.deleteQuery(q),
|
|
23
35
|
});
|
|
24
36
|
}
|
|
25
|
-
|
|
37
|
+
/** Pin one or more shape classes to a specific IDataset implementer. */
|
|
38
|
+
static setDatasetForShapes(dataset, ...shapeClasses) {
|
|
26
39
|
shapeClasses.forEach((shapeClass) => {
|
|
27
|
-
this.
|
|
40
|
+
this.shapeToDataset.set(shapeClass, dataset);
|
|
28
41
|
});
|
|
29
42
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
/** Every IDataset known to the primary router (default + all pinned). */
|
|
44
|
+
static getDatasets() {
|
|
45
|
+
const datasets = new CoreSet();
|
|
46
|
+
if (this.defaultDataset) {
|
|
47
|
+
datasets.add(this.defaultDataset);
|
|
34
48
|
}
|
|
35
|
-
this.
|
|
36
|
-
return
|
|
49
|
+
this.shapeToDataset.forEach((dataset) => datasets.add(dataset));
|
|
50
|
+
return datasets;
|
|
37
51
|
}
|
|
38
|
-
|
|
39
|
-
|
|
52
|
+
/** Read-only view of the shape→IDataset map. */
|
|
53
|
+
static getShapeToDatasetMap() {
|
|
54
|
+
return this.shapeToDataset;
|
|
40
55
|
}
|
|
41
|
-
|
|
56
|
+
/** Resolve the IDataset for a given shape class. Walks the prototype chain. */
|
|
57
|
+
static getDatasetForShapeClass(shapeClass) {
|
|
42
58
|
let current = shapeClass !== null && shapeClass !== void 0 ? shapeClass : null;
|
|
43
59
|
while (typeof current === 'function') {
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
46
|
-
return
|
|
60
|
+
const dataset = this.shapeToDataset.get(current);
|
|
61
|
+
if (dataset) {
|
|
62
|
+
return dataset;
|
|
47
63
|
}
|
|
48
64
|
const parent = Object.getPrototypeOf(current);
|
|
49
65
|
if (parent === Function.prototype || parent === null)
|
|
50
66
|
break;
|
|
51
67
|
current = parent;
|
|
52
68
|
}
|
|
53
|
-
return this.
|
|
69
|
+
return this.defaultDataset;
|
|
54
70
|
}
|
|
55
|
-
static
|
|
71
|
+
static resolveDatasetForQueryShape(shape) {
|
|
56
72
|
if (!shape) {
|
|
57
|
-
return this.
|
|
73
|
+
return this.defaultDataset;
|
|
58
74
|
}
|
|
59
75
|
if (typeof shape === 'function') {
|
|
60
|
-
return this.
|
|
76
|
+
return this.getDatasetForShapeClass(shape);
|
|
61
77
|
}
|
|
62
78
|
if (typeof shape === 'string') {
|
|
63
79
|
const shapeClass = getShapeClass(shape);
|
|
64
|
-
return this.
|
|
80
|
+
return this.getDatasetForShapeClass(shapeClass);
|
|
65
81
|
}
|
|
66
|
-
return this.
|
|
82
|
+
return this.defaultDataset;
|
|
67
83
|
}
|
|
68
84
|
static selectQuery(query) {
|
|
69
85
|
var _a;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return Promise.reject(new Error('No query store configured. Call LinkedStorage.setDefaultStore().'));
|
|
86
|
+
if (!(query === null || query === void 0 ? void 0 : query.root)) {
|
|
87
|
+
return Promise.reject(new Error(`Invalid select query passed to LinkedStorage.selectQuery(): missing root. Payload: ${query ? JSON.stringify(query) : 'undefined'}`));
|
|
73
88
|
}
|
|
74
|
-
|
|
89
|
+
const dataset = this.resolveDatasetForQueryShape((_a = query === null || query === void 0 ? void 0 : query.root) === null || _a === void 0 ? void 0 : _a.shape);
|
|
90
|
+
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.selectQuery)) {
|
|
91
|
+
return Promise.reject(new Error('No query dataset configured. Call LinkedStorage.setDefaultDataset().'));
|
|
92
|
+
}
|
|
93
|
+
return dataset.selectQuery(query);
|
|
75
94
|
}
|
|
76
95
|
static updateQuery(query) {
|
|
77
|
-
const
|
|
78
|
-
if (!(
|
|
79
|
-
return Promise.reject(new Error('No update handler configured on the query
|
|
96
|
+
const dataset = this.resolveDatasetForQueryShape(query === null || query === void 0 ? void 0 : query.shape);
|
|
97
|
+
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.updateQuery)) {
|
|
98
|
+
return Promise.reject(new Error('No update handler configured on the query dataset.'));
|
|
80
99
|
}
|
|
81
|
-
return
|
|
100
|
+
return dataset.updateQuery(query);
|
|
82
101
|
}
|
|
83
102
|
static createQuery(query) {
|
|
84
|
-
const
|
|
85
|
-
if (!(
|
|
86
|
-
return Promise.reject(new Error('No create handler configured on the query
|
|
103
|
+
const dataset = this.resolveDatasetForQueryShape(query === null || query === void 0 ? void 0 : query.shape);
|
|
104
|
+
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.createQuery)) {
|
|
105
|
+
return Promise.reject(new Error('No create handler configured on the query dataset.'));
|
|
87
106
|
}
|
|
88
|
-
return
|
|
107
|
+
return dataset.createQuery(query);
|
|
89
108
|
}
|
|
90
109
|
static deleteQuery(query) {
|
|
91
|
-
const
|
|
92
|
-
if (!(
|
|
93
|
-
return Promise.reject(new Error('No delete handler configured on the query
|
|
110
|
+
const dataset = this.resolveDatasetForQueryShape(query === null || query === void 0 ? void 0 : query.shape);
|
|
111
|
+
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.deleteQuery)) {
|
|
112
|
+
return Promise.reject(new Error('No delete handler configured on the query dataset.'));
|
|
94
113
|
}
|
|
95
|
-
return
|
|
114
|
+
return dataset.deleteQuery(query);
|
|
96
115
|
}
|
|
97
116
|
}
|
|
98
|
-
LinkedStorage.
|
|
117
|
+
LinkedStorage.shapeToDataset = new CoreMap();
|
|
99
118
|
//# sourceMappingURL=LinkedStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedStorage.js","sourceRoot":"","sources":["../../../src/utils/LinkedStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAMlD,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,OAAgB,aAAa;IAKjC,MAAM,CAAC,aAAa;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"LinkedStorage.js","sourceRoot":"","sources":["../../../src/utils/LinkedStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { DatasetsConfig } from './parseDatasetsConfig.js';
|
|
2
|
+
/**
|
|
3
|
+
* Dynamically imports each alias's `store` (an npm specifier) and
|
|
4
|
+
* instantiates the resolved class with the entry's `config` verbatim —
|
|
5
|
+
* `new StoreClass(entry.config)`. Returns alias → store.
|
|
6
|
+
*
|
|
7
|
+
* Convention: the last segment of the `store` path is the named export
|
|
8
|
+
* to use (e.g. `@_linked/fuseki/shapes/FusekiStore` → `FusekiStore`).
|
|
9
|
+
* Falls back to the module's `default` export if the named export is
|
|
10
|
+
* absent. Each store class must accept a single config-object argument.
|
|
11
|
+
*
|
|
12
|
+
* Async + uses runtime dynamic import; works in Node where the module
|
|
13
|
+
* specifier can be resolved at runtime. Frontends should instead
|
|
14
|
+
* import each store class explicitly in their storage-config file and
|
|
15
|
+
* instantiate per alias by hand (webpack can't bundle
|
|
16
|
+
* `import(variableString)`).
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import rawConfig from './linked.backend.datasets.json' assert { type: 'json' };
|
|
21
|
+
* import { parseDatasetsConfig } from '@_linked/core/utils/parseDatasetsConfig';
|
|
22
|
+
* import { loadStores } from '@_linked/core/utils/loadStores';
|
|
23
|
+
* import { LinkedStorage } from '@_linked/core/utils/LinkedStorage';
|
|
24
|
+
*
|
|
25
|
+
* const config = parseDatasetsConfig(rawConfig, process.env);
|
|
26
|
+
* const stores = await loadStores(config);
|
|
27
|
+
* LinkedStorage.setDefaultDataset(stores.appData);
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @param config Parsed config from {@link parseDatasetsConfig}.
|
|
31
|
+
* @returns Map of alias → constructed store instance.
|
|
32
|
+
* @throws If a `store` path can't be resolved to a class export.
|
|
33
|
+
*/
|
|
34
|
+
export declare function loadStores<T = unknown>(config: DatasetsConfig): Promise<Record<string, T>>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Backend-side store loader. Lives in its own file so that frontend
|
|
2
|
+
// bundlers (webpack) consuming parseDatasetsConfig don't pull in the
|
|
3
|
+
// dynamic-import code below — webpack flags `import(variableString)` as
|
|
4
|
+
// a critical dependency when it can't analyse the target statically.
|
|
5
|
+
//
|
|
6
|
+
// Backends import this directly; frontends never do.
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Dynamically imports each alias's `store` (an npm specifier) and
|
|
18
|
+
* instantiates the resolved class with the entry's `config` verbatim —
|
|
19
|
+
* `new StoreClass(entry.config)`. Returns alias → store.
|
|
20
|
+
*
|
|
21
|
+
* Convention: the last segment of the `store` path is the named export
|
|
22
|
+
* to use (e.g. `@_linked/fuseki/shapes/FusekiStore` → `FusekiStore`).
|
|
23
|
+
* Falls back to the module's `default` export if the named export is
|
|
24
|
+
* absent. Each store class must accept a single config-object argument.
|
|
25
|
+
*
|
|
26
|
+
* Async + uses runtime dynamic import; works in Node where the module
|
|
27
|
+
* specifier can be resolved at runtime. Frontends should instead
|
|
28
|
+
* import each store class explicitly in their storage-config file and
|
|
29
|
+
* instantiate per alias by hand (webpack can't bundle
|
|
30
|
+
* `import(variableString)`).
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* import rawConfig from './linked.backend.datasets.json' assert { type: 'json' };
|
|
35
|
+
* import { parseDatasetsConfig } from '@_linked/core/utils/parseDatasetsConfig';
|
|
36
|
+
* import { loadStores } from '@_linked/core/utils/loadStores';
|
|
37
|
+
* import { LinkedStorage } from '@_linked/core/utils/LinkedStorage';
|
|
38
|
+
*
|
|
39
|
+
* const config = parseDatasetsConfig(rawConfig, process.env);
|
|
40
|
+
* const stores = await loadStores(config);
|
|
41
|
+
* LinkedStorage.setDefaultDataset(stores.appData);
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @param config Parsed config from {@link parseDatasetsConfig}.
|
|
45
|
+
* @returns Map of alias → constructed store instance.
|
|
46
|
+
* @throws If a `store` path can't be resolved to a class export.
|
|
47
|
+
*/
|
|
48
|
+
export function loadStores(config) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
var _a;
|
|
51
|
+
const stores = {};
|
|
52
|
+
for (const [alias, entry] of Object.entries(config.datasets)) {
|
|
53
|
+
const mod = yield import(entry.store);
|
|
54
|
+
const exportName = entry.store.split('/').pop();
|
|
55
|
+
const StoreClass = (_a = (mod && mod[exportName])) !== null && _a !== void 0 ? _a : (mod && mod.default);
|
|
56
|
+
if (typeof StoreClass !== 'function') {
|
|
57
|
+
throw new Error(`loadStores: could not resolve a class export from "${entry.store}" for alias "${alias}". ` +
|
|
58
|
+
`Expected a named export "${exportName}" or a default export that is a class.`);
|
|
59
|
+
}
|
|
60
|
+
stores[alias] = new StoreClass(entry.config);
|
|
61
|
+
}
|
|
62
|
+
return stores;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=loadStores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadStores.js","sourceRoot":"","sources":["../../../src/utils/loadStores.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,qEAAqE;AACrE,wEAAwE;AACxE,qEAAqE;AACrE,EAAE;AACF,qDAAqD;;;;;;;;;;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAgB,UAAU,CAC9B,MAAsB;;;QAEtB,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;YACjD,MAAM,UAAU,GACd,MAAA,CAAC,GAAG,IAAK,GAA+B,CAAC,UAAU,CAAC,CAAC,mCACrD,CAAC,GAAG,IAAK,GAA2B,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,sDAAsD,KAAK,CAAC,KAAK,gBAAgB,KAAK,KAAK;oBACzF,4BAA4B,UAAU,wCAAwC,CACjF,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAK,UAAsC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** One entry under `datasets`. Keyed by alias name in the parent object. */
|
|
2
|
+
export interface DatasetEntry {
|
|
3
|
+
/** npm import path to the IDataset class — e.g. "@_linked/fuseki/shapes/FusekiStore". */
|
|
4
|
+
store: string;
|
|
5
|
+
/** Constructor argument forwarded to the store class. Shape is store-specific. */
|
|
6
|
+
config: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
/** Top-level structure of linked.{backend,frontend}.datasets.json. */
|
|
9
|
+
export interface DatasetsConfig {
|
|
10
|
+
/** Alias → store entry. */
|
|
11
|
+
datasets: Record<string, DatasetEntry>;
|
|
12
|
+
/** Reserved for future top-level sections (fileStorage, services, etc.). */
|
|
13
|
+
[section: string]: unknown;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse + env-resolve a raw datasets config object.
|
|
17
|
+
*
|
|
18
|
+
* - Requires a top-level `datasets` object (other top-level sections are passed
|
|
19
|
+
* through unchanged for future extension).
|
|
20
|
+
* - Resolves `${VAR}` and `${VAR:-default}` placeholders against `env` recursively
|
|
21
|
+
* across all string leaves.
|
|
22
|
+
* - Strips keys starting with `_` (treated as comments / `_note` fields).
|
|
23
|
+
* - Throws on a referenced env var with no default that is unset or empty.
|
|
24
|
+
*
|
|
25
|
+
* Pure + browser-safe — no file I/O, no dynamic imports. Use this on both
|
|
26
|
+
* backend and frontend. The companion `loadStores` (separate file) does the
|
|
27
|
+
* runtime dynamic-import dispatch for the backend.
|
|
28
|
+
*
|
|
29
|
+
* @example Backend
|
|
30
|
+
* ```ts
|
|
31
|
+
* import rawConfig from './linked.backend.datasets.json' assert { type: 'json' };
|
|
32
|
+
* const config = parseDatasetsConfig(rawConfig, process.env);
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example Frontend
|
|
36
|
+
* ```ts
|
|
37
|
+
* import rawConfig from './linked.frontend.datasets.json' assert { type: 'json' };
|
|
38
|
+
* // No runtime env in the browser; pass empty {}
|
|
39
|
+
* const config = parseDatasetsConfig(rawConfig, {});
|
|
40
|
+
* const appData = new BackendAPIStore(config.datasets.appData.config);
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @param raw Parsed JSON object (or anything object-shaped). Throws otherwise.
|
|
44
|
+
* @param env Env map. Defaults to {} (no interpolation).
|
|
45
|
+
* @returns Typed, env-resolved {@link DatasetsConfig}.
|
|
46
|
+
* @throws On missing/malformed `datasets`, on malformed alias entry, or
|
|
47
|
+
* on an unresolved `${VAR}` with no default.
|
|
48
|
+
*/
|
|
49
|
+
export declare function parseDatasetsConfig(raw: unknown, env?: Record<string, string | undefined>): DatasetsConfig;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// Pure parser + dispatcher for linked.{backend,frontend}.datasets.json.
|
|
2
|
+
//
|
|
3
|
+
// Per the spec in docs/backlog/016-ejection-export-flow.md:
|
|
4
|
+
//
|
|
5
|
+
// {
|
|
6
|
+
// "datasets": {
|
|
7
|
+
// "<alias>": {
|
|
8
|
+
// "store": "<npm-import-path>",
|
|
9
|
+
// "config": { /* passed verbatim to the store's constructor */ }
|
|
10
|
+
// }
|
|
11
|
+
// }
|
|
12
|
+
// }
|
|
13
|
+
//
|
|
14
|
+
// `store` is an npm import path string (e.g. "@_linked/fuseki/shapes/FusekiStore").
|
|
15
|
+
// `config` is the store class's own concern — the runtime never inspects it.
|
|
16
|
+
// `${VAR}` / `${VAR:-default}` placeholders inside string values are resolved
|
|
17
|
+
// against an env map at parse time.
|
|
18
|
+
/**
|
|
19
|
+
* Parse + env-resolve a raw datasets config object.
|
|
20
|
+
*
|
|
21
|
+
* - Requires a top-level `datasets` object (other top-level sections are passed
|
|
22
|
+
* through unchanged for future extension).
|
|
23
|
+
* - Resolves `${VAR}` and `${VAR:-default}` placeholders against `env` recursively
|
|
24
|
+
* across all string leaves.
|
|
25
|
+
* - Strips keys starting with `_` (treated as comments / `_note` fields).
|
|
26
|
+
* - Throws on a referenced env var with no default that is unset or empty.
|
|
27
|
+
*
|
|
28
|
+
* Pure + browser-safe — no file I/O, no dynamic imports. Use this on both
|
|
29
|
+
* backend and frontend. The companion `loadStores` (separate file) does the
|
|
30
|
+
* runtime dynamic-import dispatch for the backend.
|
|
31
|
+
*
|
|
32
|
+
* @example Backend
|
|
33
|
+
* ```ts
|
|
34
|
+
* import rawConfig from './linked.backend.datasets.json' assert { type: 'json' };
|
|
35
|
+
* const config = parseDatasetsConfig(rawConfig, process.env);
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example Frontend
|
|
39
|
+
* ```ts
|
|
40
|
+
* import rawConfig from './linked.frontend.datasets.json' assert { type: 'json' };
|
|
41
|
+
* // No runtime env in the browser; pass empty {}
|
|
42
|
+
* const config = parseDatasetsConfig(rawConfig, {});
|
|
43
|
+
* const appData = new BackendAPIStore(config.datasets.appData.config);
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @param raw Parsed JSON object (or anything object-shaped). Throws otherwise.
|
|
47
|
+
* @param env Env map. Defaults to {} (no interpolation).
|
|
48
|
+
* @returns Typed, env-resolved {@link DatasetsConfig}.
|
|
49
|
+
* @throws On missing/malformed `datasets`, on malformed alias entry, or
|
|
50
|
+
* on an unresolved `${VAR}` with no default.
|
|
51
|
+
*/
|
|
52
|
+
export function parseDatasetsConfig(raw, env = {}) {
|
|
53
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
54
|
+
throw new Error('Invalid datasets config: expected a top-level JSON object');
|
|
55
|
+
}
|
|
56
|
+
const resolved = resolveInterpolations(raw, env);
|
|
57
|
+
const datasets = resolved.datasets;
|
|
58
|
+
if (!datasets || typeof datasets !== 'object' || Array.isArray(datasets)) {
|
|
59
|
+
throw new Error('Invalid datasets config: missing or malformed "datasets" section');
|
|
60
|
+
}
|
|
61
|
+
for (const [alias, entry] of Object.entries(datasets)) {
|
|
62
|
+
if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
63
|
+
throw new Error(`Invalid datasets config: alias "${alias}" must be an object`);
|
|
64
|
+
}
|
|
65
|
+
const e = entry;
|
|
66
|
+
if (typeof e.store !== 'string' || !e.store) {
|
|
67
|
+
throw new Error(`Invalid datasets config: alias "${alias}" is missing a string "store" (npm import path)`);
|
|
68
|
+
}
|
|
69
|
+
if (e.config !== undefined && (typeof e.config !== 'object' || Array.isArray(e.config))) {
|
|
70
|
+
throw new Error(`Invalid datasets config: alias "${alias}" "config" must be an object if present`);
|
|
71
|
+
}
|
|
72
|
+
if (e.config === undefined)
|
|
73
|
+
e.config = {};
|
|
74
|
+
}
|
|
75
|
+
return resolved;
|
|
76
|
+
}
|
|
77
|
+
function resolveInterpolations(value, env) {
|
|
78
|
+
if (typeof value === 'string')
|
|
79
|
+
return resolveString(value, env);
|
|
80
|
+
if (Array.isArray(value)) {
|
|
81
|
+
return value.map((v) => resolveInterpolations(v, env));
|
|
82
|
+
}
|
|
83
|
+
if (value && typeof value === 'object') {
|
|
84
|
+
const out = {};
|
|
85
|
+
for (const key of Object.keys(value)) {
|
|
86
|
+
if (key.startsWith('_'))
|
|
87
|
+
continue; // _note, _comment, ...
|
|
88
|
+
out[key] = resolveInterpolations(value[key], env);
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
94
|
+
// Matches ${VAR} or ${VAR:-default}. VAR is uppercase alphanum + underscore.
|
|
95
|
+
// Default text may contain anything except `}`.
|
|
96
|
+
const INTERP_RE = /\$\{([A-Z0-9_]+)(?::-([^}]*))?\}/g;
|
|
97
|
+
function resolveString(input, env) {
|
|
98
|
+
return input.replace(INTERP_RE, (_full, varName, defaultValue) => {
|
|
99
|
+
const v = env[varName];
|
|
100
|
+
if (v !== undefined && v !== '')
|
|
101
|
+
return v;
|
|
102
|
+
if (defaultValue !== undefined)
|
|
103
|
+
return defaultValue;
|
|
104
|
+
throw new Error(`Required env var "${varName}" is not set and has no default (referenced in datasets config)`);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=parseDatasetsConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseDatasetsConfig.js","sourceRoot":"","sources":["../../../src/utils/parseDatasetsConfig.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlStore.js","sourceRoot":"","sources":["../../../src/sparql/SparqlStore.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWA,qDAQ0B;AAC1B,yDAI4B;AAC5B,qDAAuE;AACvE,iDAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAsB,WAAY,SAAQ,gBAAK;IAG7C,YAAY,OAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAgBK,WAAW,CAAC,KAAkB;;YAClC,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,IAAA,wCAAqB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,IAAA,kCAAiB,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/E,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACpB,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAA,wCAAqB,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAA,oCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAiB,CAAC;YAClC,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAA,wCAAqB,EAAC,KAAK,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,WAAW,CAAC,KAAkB;;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAA,kCAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;YACjC,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAA,oCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;YACjC,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,GAAG;gBAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM;aACxB,CAAC;QACJ,CAAC;KAAA;IAED;;;OAGG;IACG,QAAQ,CACZ,MAAc,EACd,IAAyB;;YAEzB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;KAAA;CACF;AA/ED,kCA+EC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlStore.js","sourceRoot":"","sources":["../../../src/sparql/SparqlStore.ts"],"names":[],"mappings":"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"}
|