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> |
||
|---|---|---|
| .. | ||
| src | ||
| test | ||
| .eslintrc.json | ||
| CHANGELOG.md | ||
| README.md | ||
| babel.config.json | ||
| jest.config.ts | ||
| jest.polyfills.js | ||
| package.json | ||
| project.json | ||
| tsconfig.json | ||
| tsconfig.lib.json | ||
| tsconfig.spec.json | ||
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.