What’s new in v0.15.0
- A live stream that never connects is reported. When the client gives up before its first successful connection it says so once - through the logger you configured, or on
console.warnif you configured none. Evaluations keep being answered from the cache, refreshed on the TTL, so without this the provider staysREADYand its values simply stop changing. A connection lost after connecting is reported by the stream observer instead. See Usage. - The stream request carries only the API key and
Accept. Both are all the server needs, which is one fewer name a deployment’s CORS configuration has to allow.
What’s new in v0.14.0
- A start-up failure that no retry can fix reports
PROVIDER_FATAL. A rejected API key, a base URL naming no service, and a configuration value the client will not accept leave the client inFATAL, where the SDK stops calling this provider and every evaluation returns your default at once. A timeout, an unreachable network, a server error and an overdue invoice stay recoverable, and registering the provider again can clear them. See Usage. instanceofrecognises an error raised by any copy of these classes. This package ships an ES module and a CommonJS build, and the framework SDKs carry copies of the same hierarchy, so an application can hold more than one class object per error type. The operator answers from a brand and gives one answer.NexusNotFoundErroris exported, which is what a base URL naming no service puts on the failure’scause.- The configuration you pass is copied at construction, so mutating that object afterwards - or reusing one across two providers - cannot change which endpoint or which key a provider uses.
What’s new in v0.13.0
- A composite (object or array) resolution carries an integer beyond
Number.MAX_SAFE_INTEGERas its exact decimal string - at any depth, in objects and arrays alike, so the resolved value survivesJSON.stringify. Ordinary numbers are untouched, and the scalar number resolution still answersTYPE_MISMATCHfor the same value.
What’s new in v0.12.0
- Per-user targeting. A boolean evaluation whose context carries a
targetingKeyanswers with the flag’s value for that user, so AB tests, cohort rules and percentage rollouts apply, and reportsTARGETING_MATCH. One round trip covers every flag in the snapshot. See Targeting. - The same client as the framework SDKs. The provider compiles in the browser client the Angular, React and Vue SDKs use, so it behaves identically: request deadlines, ETag-aware sync, a liveness deadline on the event stream, lossless JSON decoding, and reconnection after any close.
endpointis nowbaseUrl- a breaking configuration change.- An unknown flag reports
FLAG_NOT_FOUNDrather than a successful resolution, and a number evaluation no longer coerces a boolean, an empty string or an empty array into a number.
0.8.0 to 0.12.0 to sit with the other eleven OpenFeature bridges, which all ship this same contract at 0.12.x.
Highlights
- Framework-agnostic - any browser TypeScript or JavaScript application: Svelte, Solid, Lit, or plain DOM code.
- OpenFeature standard - code against the vendor-neutral
OpenFeature.getClient()API and swap providers without rewriting evaluation code. - Per-user targeted booleans - one batched round trip per evaluation context, then every evaluation is a synchronous local read.
- Live updates - the provider holds an event stream open and emits
ConfigurationChangedwhen a flag or config actually changes. - Honest failure behaviour - a transport failure serves the last known value as
STALE, never the caller’s default. - Public key only -
wxp_...browser keys; a secret key is rejected when the provider initialises.
Already using
@westyx-nexus/sdk-angular, -react or -vue? Use that SDK’s own OpenFeature bridge instead. It wraps the client the application already has, where this package creates and owns one - so next to a framework SDK it would open a second connection and keep a second cache.Package
NexusPublicKeyError removed along with the shared core’s getSecret()).
