/js-sdk

JavaScript SDK for OpenFeature

Primary LanguageTypeScriptApache License 2.0Apache-2.0

OpenFeature SDK for JavaScript

a codecov npm version Known Vulnerabilities Specification

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