js-sdk-contrib/libs/providers/ofrep-web
renovate[bot] fca83c925c
fix(security): update vulnerability-updates (#1342)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2025-07-04 14:53:58 -04:00
..
src chore: add "type" import enforcement lint rule and apply (#1292) 2025-05-30 13:06:18 -04:00
test feat: OFREP web provider (#776) 2024-04-05 15:56:19 +02:00
.eslintrc.json feat: OFREP web provider (#776) 2024-04-05 15:56:19 +02:00
CHANGELOG.md chore(main): release ofrep-web-provider 0.3.3 (#1320) 2025-06-23 12:38:38 -04:00
README.md chore: fix readme examples (#1027) 2024-07-28 04:24:38 +02:00
babel.config.json feat: OFREP web provider (#776) 2024-04-05 15:56:19 +02:00
jest.config.ts fix(security): update vulnerability-updates (#1342) 2025-07-04 14:53:58 -04:00
jest.polyfills.js chore: update nx packages (#1147) 2025-01-10 11:36:17 -05:00
package.json chore(main): release ofrep-web-provider 0.3.3 (#1320) 2025-06-23 12:38:38 -04:00
project.json chore: update nx packages (#1147) 2025-01-10 11:36:17 -05:00
tsconfig.json feat: OFREP web provider (#776) 2024-04-05 15:56:19 +02:00
tsconfig.lib.json chore: update nx packages (#1147) 2025-01-10 11:36:17 -05:00
tsconfig.spec.json feat: OFREP web provider (#776) 2024-04-05 15:56:19 +02:00

README.md

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 @openfeature/core

[!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-provider';

OpenFeature.setProvider(new OFREPWebProvider({ baseUrl: 'https://localhost:8080', pollInterval: 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-provider';

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

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-provider';

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-provider';
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.