v2.6.0
Minor Changes
-
#80
439d1a3Thanks @flyon! - Storage refactor (parseDatasetsConfig+loadStores) and dataset-terminology renames.New:
parseDatasetsConfig. Readslinked.<side>.datasets.jsonin the new shape{ datasets: { <alias>: { store: "<npm-path>", config: {...} } } }, resolves${VAR}placeholders against the runtime environment, and returns a typed config object. Replaces the old shape that pre-baked store classes.New:
loadStores(BE async dispatcher). Given the parsed config, dynamically imports each alias'sstorepackage by its npm path and instantiates with the alias'sconfig. Lives in its own file (utils/loadStores.ts) so frontend bundles can importparseDatasetsConfigwithout webpack flagging the dynamic import as a critical dependency. Frontend code hardcodes the per-alias store mapping; only backend usesloadStores.Breaking:
buildStoresFromConfigremoved. Replaced by theparseDatasetsConfig+loadStorespair. Migration: split your call into the parse + load steps; the parsed config can be re-used by frontend code (which then imports stores statically).Breaking: dataset-terminology renames. Continuing the IQuadStore → IDataset rename from 2.5.0 to public API surfaces:
// before LinkedStorage.setDefaultStore(store); LinkedStorage.setStoreForShapes(store, [Shape1, Shape2]); import { SparqlStore } from "@_linked/core/datasets/SparqlStore"; // after LinkedStorage.setDefaultDataset(dataset); LinkedStorage.setDatasetForShapes(dataset, [Shape1, Shape2]); import { SparqlDataset } from "@_linked/core/datasets/SparqlDataset";
The class is the same; the public name now reflects the "every store is a dataset" model.
Fix: mutation-side URI resolution. Companion to PR #77 — apply the same URI fidelity fix on the SPARQL mutation path (was previously only on the read path).
Fix: projected optional traversals. SPARQL execution preserves projection through optional triple patterns.
Fix: SHACL malformed inherited property shapes guarded. No longer throws on malformed inheritance chains; emits a warning instead.
Internal: harden
selectQuery+ asset helpers. Better error messages on invalid input. Test helperfindComposeFileupdated to find docker-compose test files in additional paths.
Patch Changes
-
#82
e340be8Thanks @flyon! - CI: removepublishConfig.provenance: true. npm registry rejects publishes with provenance when trusted-publishing isn't configured for the package. Aligns with the other@_linked/*packages, which publish without provenance. -
#87
c7089bfThanks @flyon! - CI: switch to OIDC trusted publishing.Publishes from this repo's
publish.ymlworkflow now authenticate via GitHub Actions OIDC, signed against the trusted-publisher entry on npm for@_linked/core. NoNPM_AUTH_TOKENis used. Each published tarball carries provenance attestation.The npm-side package settings should pair this with
mfa=publish+ Trusted Publisher entry:linked-cm/corerepo +publish.ymlworkflow. Token-based publishes (including from leaked GH secrets) are then blocked entirely; only this specific workflow can publish.