@openfeature/ofrep-web-provider
TypeScript icon, indicating that this package has built-in type declarations

0.1.3 • Public • Published

Client-Side OFREP Provider

This provider is designed to use the OpenFeature Remote Evaluation Protocol (OFREP).

Installation

npm

npm install @openfeature/ofrep-web-provider

yarn

yarn add @openfeature/ofrep-web-provider @openfeature/ofrep-core @openfeature/web-sdk

[!NOTE] yarn requires manual installation of peer dependencies

Configurations and Usage

The provider needs the base url of the OFREP server for instantiation.

import { OFREPWebProvider } from '@openfeature/ofrep-web';

OpenFeature.setProvider(new OFREPWebProvider({ baseUrl: 'https://localhost:8080', pollingInterval: 60000 }));

HTTP headers

The provider can use headers from either a static header map or a custom header factory.

Static Headers

Headers can be given as a list of tuples or as a map of headers.

import { OFREPWebProvider } from '@openfeature/ofrep-web';

OpenFeature.setProvider(
  new OFREPWebProvider({
    baseUrl: 'https://localhost:8080',
    headers: [
      ['Authorization', `my-api-key`],
      ['X-My-Header', `CustomHeaderValue`],
    ],
  }),
);
import { OFREPWebProvider } from '@openfeature/ofrep-web';

OpenFeature.setProvider(
  new OFREPWebProvider({
    baseUrl: 'https://localhost:8080',
    headers: { Authorization: `my-api-key`, 'X-My-Header': `CustomHeaderValue` },
  }),
);

Header Factory

The header factory is evaluated before every flag evaluation which makes it possible to use dynamic values for the headers.

The following shows an example of loading a token and using it as bearer token.

import { OFREPWebProvider } from '@openfeature/ofrep-web';

OpenFeature.setProvider(
  new OFREPWebProvider({
    baseUrl: 'https://localhost:8080',
    headersFactory: () => {
      const token: string = loadDynamicToken();
      return [['Authorization', `Bearer ${token}`]];
    },
  }),
);

Fetch implementation

If needed, a custom fetch implementation can be injected, if e.g. the platform does not have fetch built in.

import { OFREPWebProvider } from '@openfeature/ofrep-web';
import { fetchPolyfill } from 'some-fetch-polyfill';

OpenFeature.setProvider(
  new OFREPWebProvider({
    baseUrl: 'https://localhost:8080',
    fetchImplementation: fetchPolyfill
  }),
);

Building

Run nx package providers-ofrep-web to build the library.

Running unit tests

Run nx test providers-ofrep-web to execute the unit tests via Jest.

Readme

Keywords

none

Package Sidebar

Install

npm i @openfeature/ofrep-web-provider

Weekly Downloads

91

Version

0.1.3

License

none

Unpacked Size

45.1 kB

Total Files

16

Last publish

Collaborators

  • beeme1mr
  • toddbaert