Skip to content

v2.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Jun 13:51
· 445 commits to main since this release
c19b001

Minor Changes

  • #80 439d1a3 Thanks @flyon! - Storage refactor (parseDatasetsConfig + loadStores) and dataset-terminology renames.

    New: parseDatasetsConfig. Reads linked.<side>.datasets.json in 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's store package by its npm path and instantiates with the alias's config. Lives in its own file (utils/loadStores.ts) so frontend bundles can import parseDatasetsConfig without webpack flagging the dynamic import as a critical dependency. Frontend code hardcodes the per-alias store mapping; only backend uses loadStores.

    Breaking: buildStoresFromConfig removed. Replaced by the parseDatasetsConfig + loadStores pair. 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 helper findComposeFile updated to find docker-compose test files in additional paths.

Patch Changes

  • #82 e340be8 Thanks @flyon! - CI: remove publishConfig.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 c7089bf Thanks @flyon! - CI: switch to OIDC trusted publishing.

    Publishes from this repo's publish.yml workflow now authenticate via GitHub Actions OIDC, signed against the trusted-publisher entry on npm for @_linked/core. No NPM_AUTH_TOKEN is used. Each published tarball carries provenance attestation.

    The npm-side package settings should pair this with mfa=publish + Trusted Publisher entry: linked-cm/core repo + publish.yml workflow. Token-based publishes (including from leaked GH secrets) are then blocked entirely; only this specific workflow can publish.