Releases: linked-fw/server
Release list
v2.1.7
Patch Changes
-
#30
87a524bThanks @flyon! - Track the current@_linked/core(^2.17.0).The declared range was
^2.2.1while the lockfile pinned 2.11.1, so CI built
against a core three minor versions behind the one consumers actually run. That
divergence is invisible locally — the monorepo resolves core to 2.17.0 — and it
surfaced as a build failure only after a change referenced a module that exists
in 2.17.0 but not in 2.11.1.
v2.1.6
Patch Changes
-
#28
093e096Thanks @flyon! - Install the SPA catch-all aftersetupAfterControllers, and re-pin it after HMR.The client shell is served from a catch-all
GET *, which is only a fallback by
accident of registration order. Two supported paths register GET routes once it
already exists:setupAfterControllers(a documented provider hook, which ran
after the catch-all was installed) andonSourceChange, where
disposeRoutes()splices a provider's layers out andregisterRoute()can only
append them back. A route that ends up behind the catch-all is answered with the
HTML shell at status 200, so it reads as an auth/config problem rather than a
routing one.The catch-all now goes on last, in its own
installSpaFallback()step after
setupAfterControllers, andonSourceChangere-pins it once providers have
re-registered. Ordering is asserted at registration time from the two places
that create the situation, so nothing hooks express's dispatch path. Trailing
error-handling middleware (arity-4) is deliberately kept behind the fallback, so
errors thrown while rendering the shell still reach the app's error handler.Adds the package's first test harness (jest + ts-jest) with coverage for the
ordering, the dispose/re-register cycle, error-handler placement, idempotency,
and a negative control asserting the shell wins when re-pinning is skipped.
v2.1.5
Patch Changes
-
#26
b3ea735Thanks @flyon! - Build the in-memory shape index against either core property-list shape.indexShapesIntoMemoryreadlocalShape.properties. Newer@_linked/core
converted shape metadata to plain objects exposingpropertyShapesand dropped
theNodeShape.propertiesgetter, so that read returned undefined and threw on
.map. The throw happened while evaluating the object literal, before the
shapeIndex[...] = ...assignment, on the first shape class carrying a
.shape— so the loop aborted on its first iteration and the index was left
completely empty rather than partial. Everything reading it (LincdAPI
get_all_shapes/get_shape_details, and the shape-catalog fallback and
shape-sync in create-now-js) silently saw nothing.Nothing surfaced because the async call was not awaited at either call site
(initOnly,start): the failure escaped as an unhandled rejection and boot
continued as if it had succeeded. Both call sites now await it.The property list is read as
.properties ?? .propertyShapes, so the index
builds against both the core generation this package declares (which still has
the getter) and newer core (plain objects).
v2.1.4
@_linked/server
2.1.3
Patch Changes
- #20
2bda81cThanks @flyon! -LinkedServer.callShapeMethodnow degrades gracefully (warns and skips) when a shape URI can't be resolved to a provider, instead of throwing and turning the whole request into a 500.
2.1.2
Patch Changes
- #17
ef9d285Thanks @flyon! - Remove thedevelopmentexport condition (pointed atsrc, which isn't shipped to npm). Monorepo dev resolves workspace source via the cli Vite plugin; standalone resolvesimport → lib. No consumer-visible change.
2.1.1
Patch Changes
- #15
e98441fThanks @flyon! - Replace removedCoreMapwith nativeMap(core dropped CoreMap inb2de3ad). FixesCannot find module @_linked/core/collections/CoreMapfrom LinkedServer on a clean install.
2.1.0
Minor Changes
- #13
8932811Thanks @flyon! - ESM-only. Dropped the CommonJS build; the package now ships ES modules only (type: module, norequireexport condition, nolib/cjs). All first-party consumers are ESM; CJS projects on Node 22+ can stillrequire()it (sync ESM) or use dynamicimport(). Also fixed the roottypesfield (was a non-existent./index.d.ts).
Patch Changes
-
#13
daef98dThanks @flyon! -BackendAPIStorenow speaks DSL-JSON over the wire, adapting to the@_linked/corequery-contract flip (datasets receive the live/closed query, not IR).- The frontend store serializes each query with
query.toJSON()beforeServer.call(the live query can't cross the wire), replacing the removedgetQueryObject()path. BackendAPIStoreProviderrehydrates it withfromJSON(json)back into a live query before routing throughLinkedStorage— the backend store lowers it to SPARQL itself.
No API change for callers; the round-trip is
lower(fromJSON(query.toJSON())) ≡ lower(query). - The frontend store serializes each query with
-
#13
28d0f49Thanks @flyon! - Droppedlincd-sioc: ~1.0frompackage.jsondependencies. Audit
confirmed no source file inpackages/server/srcimports from sioc;
the dep was vestigial.No API change. Consumers that depended on
@_linked/servertransitively
pulling sioc into their lockfile will need to add@_linked/sioc(the
new name; see its own release notes) as a direct dep if they actually
use it.Context: see create-now plan-011 report (docs/reports/009-legacy-lincd-eradication.md).
2.0.3
Patch Changes
- #10
5619ddfThanks @flyon! - Switch to explicit per-step build pipeline (mirrors@_linked/cli's and@_linked/server-utils's). The previousyarn linked buildwrapper was failing silently in CI and shipping incomplete tarballs.
2.0.2
Patch Changes
- #8
17e6771Thanks @flyon! - Rebuild against@_linked/server-utils@1.0.5. The lockfile previously pinned1.0.4whose published tarball was empty, so server's build couldn't resolveBackendProvider/JSONParser/JSONWriter/RouteConfig. Lockfile now points at1.0.5which ships itslib/correctly.
2.0.1
Patch Changes
- #6
7eb425bThanks @flyon! - Rebuild + republish. The 2.0.0 tarball shipped withoutlib/because the build silently failed against an empty@_linked/server-utils@1.0.4tarball.@_linked/server-utils@1.0.5now ships itslib/correctly, so this version compiles + packages as intended.
2.0.0
Major Changes
-
#4
d1ad65cThanks @flyon! - Track@_linked/corestorage-API renames and adopt the new BackendAPIStore config-object constructor.Breaking — call-site renames (paired with the matching changes in
@_linked/core):LinkedStorage.setDefaultStore→setDefaultDatasetLinkedStorage.setStoreForShapes→setDatasetForShapesLinkedStorage.getDefaultStore→getDefaultDatasetLinkedStorage.getStores→getDatasetsSparqlStore→SparqlDataset
Breaking —
BackendAPIStoreconstructor takes a config object:// before new BackendAPIStore("appData"); // after new BackendAPIStore({ name: "appData" });
The config field is
name(renamed fromaliasin the intermediate iteration).Fix — scoped-package
/callroutes. Backend now correctly routes/call/@scope/pkg/methodrequests, not just/call/pkg/method.Fix — relative bundle URLs in dev. Drops the baked-in
:4000origin so bundle URLs work whateverPORTthe dev server binds to.Docs. Constructor doc-comments refreshed from the older
lincdnaming tolinked.
Minor Changes
-
#4
2ae7a72Thanks @flyon! - UpdateBackendAPIStoreto implementIDataset(renamed fromIQuadStorein@_linked/core).No functional change — import path and interface name updated to match the new
@_linked/coreexport.
1.0.8
Patch Changes
bb74f32- Initial release under the new publishing setup.
v2.1.3
v2.1.2
v2.1.1
v2.1.0
Minor Changes
- #13
8932811Thanks @flyon! - ESM-only. Dropped the CommonJS build; the package now ships ES modules only (type: module, norequireexport condition, nolib/cjs). All first-party consumers are ESM; CJS projects on Node 22+ can stillrequire()it (sync ESM) or use dynamicimport(). Also fixed the roottypesfield (was a non-existent./index.d.ts).
Patch Changes
-
#13
daef98dThanks @flyon! -BackendAPIStorenow speaks DSL-JSON over the wire, adapting to the@_linked/corequery-contract flip (datasets receive the live/closed query, not IR).- The frontend store serializes each query with
query.toJSON()beforeServer.call(the live query can't cross the wire), replacing the removedgetQueryObject()path. BackendAPIStoreProviderrehydrates it withfromJSON(json)back into a live query before routing throughLinkedStorage— the backend store lowers it to SPARQL itself.
No API change for callers; the round-trip is
lower(fromJSON(query.toJSON())) ≡ lower(query). - The frontend store serializes each query with
-
#13
28d0f49Thanks @flyon! - Droppedlincd-sioc: ~1.0frompackage.jsondependencies. Audit
confirmed no source file inpackages/server/srcimports from sioc;
the dep was vestigial.No API change. Consumers that depended on
@_linked/servertransitively
pulling sioc into their lockfile will need to add@_linked/sioc(the
new name; see its own release notes) as a direct dep if they actually
use it.Context: see create-now plan-011 report (docs/reports/009-legacy-lincd-eradication.md).