@_linked/core 2.17.0-next.20260827134643 → 2.17.0-next.20260827134740
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
|
@@ -23,6 +23,20 @@
|
|
|
23
23
|
|
|
24
24
|
`PropertyShapeConfig.path` now documents all four accepted forms, including that an ontology term is passed **directly** (`documents.confidence`) and never via `.id` — which would unwrap it back to the bare string.
|
|
25
25
|
|
|
26
|
+
- [#199](https://github.com/linked-cm/core/pull/199) [`ec22ee1`](https://github.com/linked-cm/core/commit/ec22ee170eed4c9dfb2366b6fcd73d800ec16525) Thanks [@flyon](https://github.com/flyon)! - `syncShapes` can scope its orphan sweep to the namespaces it owns.
|
|
27
|
+
|
|
28
|
+
The sweep previously pruned every store-only shape it found. In a **multi-writer** dataset — an app-data store written by more than one package — that means one writer's sync deletes shapes another writer legitimately owns.
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
await syncShapes(shapes, { orphanScope: "ownedNamespaces" });
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- `'all'` _(default, unchanged)_ — prune every store-only shape. Correct when the sync is the sole writer.
|
|
35
|
+
- `'ownedNamespaces'` — only prune shapes in namespaces this sync owns.
|
|
36
|
+
- `'none'` — never prune.
|
|
37
|
+
|
|
38
|
+
Additive: omit the option and behaviour is exactly as before.
|
|
39
|
+
|
|
26
40
|
## 2.16.1
|
|
27
41
|
|
|
28
42
|
### Patch Changes
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { Shape } from './Shape.js';
|
|
2
2
|
import type { IDataset } from '../interfaces/IDataset.js';
|
|
3
|
+
/** Options controlling how {@link syncShapes} treats store shapes that are not in code. */
|
|
4
|
+
export interface SyncShapesOptions {
|
|
5
|
+
/**
|
|
6
|
+
* How to treat NodeShapes present in the store but not in the current process's code:
|
|
7
|
+
* - `'all'` (default) — prune every store-only shape as an orphan. Correct for a
|
|
8
|
+
* **single-writer** dataset (CN's own storage sync, tests), where "not in code" ⇒ deleted.
|
|
9
|
+
* - `'ownedNamespaces'` — prune a store-only shape ONLY if its IRI falls within a namespace
|
|
10
|
+
* this process actually writes (the package-namespace of one of its code-registered shapes,
|
|
11
|
+
* i.e. the IRI prefix up to the last `/` or `#`). This is the **multi-writer** rule (arch-04:
|
|
12
|
+
* one app-data dataset, several writers): an app booting `syncShapesOnBoot` must not delete
|
|
13
|
+
* shapes another writer (e.g. CN's `enableCapability`) materialized into the same dataset in a
|
|
14
|
+
* package the app never registers. Renames/removals WITHIN the app's own package still prune.
|
|
15
|
+
* - `'none'` — never prune; purely additive (delete→recreate the code shapes, touch nothing else).
|
|
16
|
+
*/
|
|
17
|
+
orphanScope?: 'all' | 'ownedNamespaces' | 'none';
|
|
18
|
+
}
|
|
3
19
|
/**
|
|
4
20
|
* Plan an idempotent sync of all code-registered (non-framework) NodeShapes into the store as
|
|
5
21
|
* SHACL data — the forward (code → graph) materialization of arch-05 "code is canonical".
|
|
@@ -11,14 +27,18 @@ import type { IDataset } from '../interfaces/IDataset.js';
|
|
|
11
27
|
* Each in-code shape's thunk runs `delete → create` in order (the delete cascade-cleans the old
|
|
12
28
|
* property shapes / list / path subtrees via the containment cascade, the create rebuilds them).
|
|
13
29
|
* Shapes present in the store but no longer in code are deleted as orphans (their owned subtree
|
|
14
|
-
* cascades too). Reads existing shape IRIs for orphan detection.
|
|
30
|
+
* cascades too) — subject to `options.orphanScope`. Reads existing shape IRIs for orphan detection.
|
|
15
31
|
*
|
|
16
32
|
* `ds` (optional) targets an explicit dataset instead of the global router. It is a **plan-time**
|
|
17
33
|
* parameter: it feeds both the orphan-detection read (so orphans are computed against the same
|
|
18
34
|
* store they'll be pruned from) and every delete/create thunk. Omitted → today's global behavior;
|
|
19
35
|
* the returned thunks stay nullary either way.
|
|
36
|
+
*
|
|
37
|
+
* `options.orphanScope` (default `'all'`) scopes the orphan sweep — see {@link SyncShapesOptions}.
|
|
38
|
+
* Multi-writer datasets (an app materializing on boot next to CN's capability shapes) MUST pass
|
|
39
|
+
* `'ownedNamespaces'` so the sweep never clobbers another writer's shapes.
|
|
20
40
|
*/
|
|
21
|
-
export declare function syncShapes(ds?: IDataset): Promise<Array<() => Promise<void>>>;
|
|
41
|
+
export declare function syncShapes(ds?: IDataset, options?: SyncShapesOptions): Promise<Array<() => Promise<void>>>;
|
|
22
42
|
/**
|
|
23
43
|
* Plan an idempotent sync of ONE code-registered NodeShape into the store as SHACL data.
|
|
24
44
|
*
|
|
@@ -118,6 +118,11 @@ function buildSyncThunk(nodeShape, iri, ds) {
|
|
|
118
118
|
.then(() => undefined);
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
|
+
/** The owning namespace of a shape IRI — everything up to and including the last `/` or `#`. */
|
|
122
|
+
function shapeNamespace(iri) {
|
|
123
|
+
const cut = Math.max(iri.lastIndexOf('/'), iri.lastIndexOf('#'));
|
|
124
|
+
return cut >= 0 ? iri.slice(0, cut + 1) : iri;
|
|
125
|
+
}
|
|
121
126
|
/**
|
|
122
127
|
* Plan an idempotent sync of all code-registered (non-framework) NodeShapes into the store as
|
|
123
128
|
* SHACL data — the forward (code → graph) materialization of arch-05 "code is canonical".
|
|
@@ -129,15 +134,21 @@ function buildSyncThunk(nodeShape, iri, ds) {
|
|
|
129
134
|
* Each in-code shape's thunk runs `delete → create` in order (the delete cascade-cleans the old
|
|
130
135
|
* property shapes / list / path subtrees via the containment cascade, the create rebuilds them).
|
|
131
136
|
* Shapes present in the store but no longer in code are deleted as orphans (their owned subtree
|
|
132
|
-
* cascades too). Reads existing shape IRIs for orphan detection.
|
|
137
|
+
* cascades too) — subject to `options.orphanScope`. Reads existing shape IRIs for orphan detection.
|
|
133
138
|
*
|
|
134
139
|
* `ds` (optional) targets an explicit dataset instead of the global router. It is a **plan-time**
|
|
135
140
|
* parameter: it feeds both the orphan-detection read (so orphans are computed against the same
|
|
136
141
|
* store they'll be pruned from) and every delete/create thunk. Omitted → today's global behavior;
|
|
137
142
|
* the returned thunks stay nullary either way.
|
|
143
|
+
*
|
|
144
|
+
* `options.orphanScope` (default `'all'`) scopes the orphan sweep — see {@link SyncShapesOptions}.
|
|
145
|
+
* Multi-writer datasets (an app materializing on boot next to CN's capability shapes) MUST pass
|
|
146
|
+
* `'ownedNamespaces'` so the sweep never clobbers another writer's shapes.
|
|
138
147
|
*/
|
|
139
|
-
export function syncShapes(ds) {
|
|
148
|
+
export function syncShapes(ds, options) {
|
|
140
149
|
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
var _a;
|
|
151
|
+
const orphanScope = (_a = options === null || options === void 0 ? void 0 : options.orphanScope) !== null && _a !== void 0 ? _a : 'all';
|
|
141
152
|
// 1. Enumerate code-registered user shapes (exclude framework/meta shapes).
|
|
142
153
|
const userShapes = [];
|
|
143
154
|
for (const [iri, shapeClass] of getAllShapeClasses()) {
|
|
@@ -151,18 +162,26 @@ export function syncShapes(ds) {
|
|
|
151
162
|
userShapes.push({ iri, nodeShape: shapeClass.shape });
|
|
152
163
|
}
|
|
153
164
|
const localShapeIris = new Set(userShapes.map((s) => s.iri));
|
|
154
|
-
//
|
|
155
|
-
|
|
156
|
-
const existingRows = (yield NodeShape.select().exec(ds));
|
|
157
|
-
const existingShapeIris = new Set(existingRows.map((r) => r.id));
|
|
165
|
+
// Namespaces this process actually writes — the ownership scope for `'ownedNamespaces'` pruning.
|
|
166
|
+
const ownedNamespaces = new Set(userShapes.map((s) => shapeNamespace(s.iri)));
|
|
158
167
|
const thunks = [];
|
|
159
|
-
//
|
|
168
|
+
// 2. Per in-code shape: delete (cascade) then recreate.
|
|
160
169
|
for (const { iri, nodeShape } of userShapes) {
|
|
161
170
|
thunks.push(buildSyncThunk(nodeShape, iri, ds));
|
|
162
171
|
}
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
|
|
172
|
+
// 3. Orphan sweep (unless disabled). Identity-read existing NodeShape IRIs (ids only). Must hit
|
|
173
|
+
// the same `ds` the thunks target, or orphans get computed against the wrong store.
|
|
174
|
+
if (orphanScope !== 'none') {
|
|
175
|
+
const existingRows = (yield NodeShape.select().exec(ds));
|
|
176
|
+
// Orphan shapes (in store, not in code) → delete (cascade cleans their owned subtree). In
|
|
177
|
+
// `'ownedNamespaces'` mode, only shapes within a namespace this process writes are eligible —
|
|
178
|
+
// other writers' shapes (different package namespace) are left untouched.
|
|
179
|
+
for (const { id: iri } of existingRows) {
|
|
180
|
+
if (localShapeIris.has(iri))
|
|
181
|
+
continue;
|
|
182
|
+
if (orphanScope === 'ownedNamespaces' && !ownedNamespaces.has(shapeNamespace(iri))) {
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
166
185
|
thunks.push(() => DeleteBuilder.from(NodeShape, { id: iri }).exec(ds).then(() => undefined));
|
|
167
186
|
}
|
|
168
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncShapes.js","sourceRoot":"","sources":["../../../src/shapes/syncShapes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"syncShapes.js","sourceRoot":"","sources":["../../../src/shapes/syncShapes.ts"],"names":[],"mappings":"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"}
|