What’s new in v0.10.0
- Version alignment across the Westyx Nexus SDK suite.
What’s new in v0.8.0
@westyx-nexus/openfeature-provider-vue- OpenFeature bridge provider wrapping an existingNexusClient. EmitsConfigurationChangedon every cache update; exposes flags as boolean evaluations and configs as string/number/object evaluations.
What’s new in v0.4.1
- Fetch-based SSE stream - the live-update connection now uses
fetch+ReadableStreaminstead ofEventSource. The API key is sent asX-Nexus-API-Keyheader and no longer appears in the stream URL as?key=, keeping it out of server access logs and browser history. - Security improvements - response bodies are scrubbed from all error paths;
NexusError.causeis non-enumerable so error chains do not appear inJSON.stringifyoutput. - Network hardening - all
fetchcalls now carryAbortSignal.timeout(30 s);response.json()is wrapped intry/catchto handle malformed 200 responses gracefully. - Reliability fix - the SSE error counter is reset when
connectStream()is called after a max-error fallback, so reconnects start from zero rather than immediately re-triggering the fallback. - CI improvements - tests run on every MR and
mainpush; publish is restricted to semver tags.
What’s new in v0.4.0
- Path prefix change - all API paths updated from
/api/v1/to/v1/(/v1/sync,/v1/stream,/v1/flags/evaluate-ab). NexusQuarantinedError- new error class thrown when the server returns 429 with{"error":"quarantined"}body. Carriesreason(string) andexpiresAt(Date). The SDK pauses background sync untilexpiresAt.onQuarantined(reason, expiresAt)observer hook - fires for both sync and SSE pre-flight quarantine 429 responses.is_publicremoved fromConfigEntry- the field has been removed from the sync response schema.
What’s new in v0.3.1
- 429 SSE pre-flight probe -
connectStream()now runs afetchpre-flight against the stream URL before openingEventSource. On HTTP 429 the SDK parsesRetry-After(clamped to[5 s, 300 s], default 5 s on miss), emitsFALLBACK_REASON_RATE_LIMITED, and re-attempts the connect after the indicated delay. - Plugin teardown - both
createNexusPlugin().installandprovideNexus()now wrap the hostapp.unmount()to callclient.disconnectStream()on teardown. Prevents leaked SSE connections during HMR and SSR app teardown. FALLBACK_REASON_RATE_LIMITEDvalue aligned - the exported constant’s value changed from'rate_limited'(underscore) to'rate-limited'(kebab) for parity with the Angular / React / Node SDKs.
Highlights
- Vue 3.3+ - Composition API only, single package, zero external runtime dependencies (fetch-based SSE with
ReadableStream+AbortController, not the browserEventSourceAPI) provideNexus()blocking initial sync -awaitit beforeapp.mount()so children never render against an empty cache- Reactive composables returning
ComputedRefs - Vue’s reactivity system automatically re-renders components when the cache changes - Thread-safe TTL cache with atomic snapshot replacement and ETag/304 support
- SSE live updates - propagates remote changes within milliseconds; falls back to TTL polling after 3 transport errors
- public-key enforcement - browser SDKs must use a public key; secret keys are rejected at runtime
- Stream observer hooks (v0.2.0) - structured callbacks for SSE lifecycle events
Package
Hosted on the GitLab npm Package Registry. Install:The npm package name is
@westyx-nexus/sdk-vue (no js suffix), while the GitLab project is westyx/nexus/sdk/vuejs. They’re independent - npm scope is a brand identifier, GitLab path is a repo location.