OpenFeature SDK for JavaScript
This is the JavaScript implementation of OpenFeature, a vendor-agnostic abstraction library for evaluating feature flags.
We support multiple data types for flags (numbers, strings, booleans, objects) as well as hooks, which can alter the lifecycle of a flag evaluation.
This library is intended to be used in server-side contexts and has only experimental support for web usage.
Installation
npm install @openfeature/js-sdk
or
yarn add @openfeature/js-sdk
Usage
import { OpenFeature } from '@openfeature/js-sdk';
OpenFeature.setProvider(new MyProvider());
const client = OpenFeature.getClient();
const value = await client.getBooleanValue('enabled-new-feature', false);
Development
System Requirements
node 16+, npm 8+ are recommended.
Compilation target(s)
We target es2015
, and publish both ES-modules and CommonJS modules.
Installation and Dependencies
Install dependencies with npm ci
. npm install
will update the package-lock.json with the most recent compatible versions.
We value having as few runtime dependencies as possible. The addition of any dependencies requires careful consideration and review.
Testing
Run tests with npm test
.
Integration tests
The continuous integration runs a set of gherkin integration tests using flagd
. These tests run with the "integration" npm script. If you'd like to run them locally, you can start the flagd testbed with docker run -p 8013:8013 ghcr.io/open-feature/flagd-testbed:latest
and then run npm run integration
.
Packaging
Both ES modules and CommonJS modules are supported, so consumers can use both require
and import
functions to utilize this module. This is accomplished by building 2 variations of the output, under dist/esm
and dist/cjs
, respectively. To force resolution of the dist/esm/**.js*
files as modules, a package json with only the context {"type": "module"}
is included at a in a postbuild
step. Type declarations are included at /dist/types/
For testing purposes, you can add a comment containing "/publish" in any PR. This will publish an experimental SDK version with the git SHA appended to the version number.
Contributors
Thanks so much to our contributors.
Made with contrib.rocks.
License
Apache License 2.0