This provider is designed to use the OpenFeature Remote Evaluation Protocol (OFREP).
npm install @openfeature/ofrep-web-provider
yarn add @openfeature/ofrep-web-provider @openfeature/ofrep-core @openfeature/web-sdk @openfeature/core
[!NOTE] yarn requires manual installation of peer dependencies
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 }));
The provider can use headers from either a static header map or a custom header factory.
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` },
}),
);
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}`]];
},
}),
);
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
}),
);
Run nx package providers-ofrep-web
to build the library.
Run nx test providers-ofrep-web
to execute the unit tests via Jest.