# toggle-provider

> NodeJS toggle provider interface and unleash client

Latest version **1.0.0** (published 2024-02-26) · ISC license · 0 weekly downloads

## Install

```sh
npm install toggle-provider
pnpm add toggle-provider
yarn add toggle-provider
bun add toggle-provider
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2024-02-26 |
| First published | 2024-02-26 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 74.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Byteverse |
| Maintainers | anokhi0895 |
| Keywords | Toggle, unleash |

## Links

- npm: https://www.npmjs.com/package/toggle-provider
- Repository: https://gitlab.byteprophecy.accenture.com/dataverse/common-nodejs-components
- Homepage: https://gitlab.byteprophecy.accenture.com/dataverse/common-nodejs-components/packages/toggle-provider#readme
- Issues: https://gitlab.byteprophecy.accenture.com/dataverse/common-nodejs-components/issues
- npm.io page: https://npm.io/package/toggle-provider

## Dependencies (2)

- [unleash-client](https://npm.io/package/unleash-client.md) ^3.16.0
- [commonjs-logger](https://npm.io/package/commonjs-logger.md) ^1.0.0

## Recent versions

- 1.0.0 (latest) — 2024-02-26

## README

# `@dataverse/toggle-provider`

This package provides a common interface for feature toggle provider functionality as well as default feature toggle provider implementation leveraging Unleash server client.

## Config

| Name            | Description                                                       |
| --------------- | ----------------------------------------------------------------- |
| url             | URL to Unleash server (not proxy but the actual instance)         |
| appName         | app name for browser and metric reasons                           |
| instanceId      | identity the instance                                             |
| apiToken        | token to authorize API requests (taken from Unleash)              |
| logger          | A config for the logger                                           |
| refreshInterval | How often does unleash client refreshes the toggles status        |
| disableMetrics  | Should the client register with the server and send usage metrics |
| environment     | Which environment in Unleash to connect to                        |

For logger configuration properties see the
[logger documentation](https://gitlab.byteprophecy.accenture.com/dataverse/common-nodejs-components/blob/develop/packages/logger/README.md)

## Usage

```typescript
import { UnleashToggleProvider } from '@dataverse/toggle-provider';

const config = {
  url: 'https://URL to your unleash instance/api',
  appName: 'my application',
  instanceId: 'my application instance id',
  apiToken: '*.development.tokenfromunleash',
  logger: { ...loggerConfig },
  refreshInterval: 15000,
  disableMetrics: false,
  environment: 'development',
};

const provider = new UnleashToggleProvider(config);

// Init the instance (optional bootstrap can be provided to load feature config before first api call is done)
await provider.init();

const isEnabled = provider.isEnabled('feature-name-from-unleash');
// console.log(isEnabled) -> false

// Optionally make sure your openapi definition is feature toggled.
// Take a look into ./src/__tests__/fixtures for possible usage.
// Currently object and array object segments can be feature toggled
const openapiSpec = {
  info: {},
  paths: {
    '/users': {
      post: {
        'x-toggle-feature': 'feature-name-from-unleash',
      },
    },
  },
};

const featureToggleUpdatedSpec = this.provider.syncOpenApiSpec(openapiSpec);
// console.log(featureToggleUpdatedSpec) ->
// {
//   info: {},
//   paths: {
//     '/users': {
//       // The whole post object parrent to 'x-toggle-feature' is removed when the feature toggle is disabled
//     },
//   },
// }
```

---
_Source: https://npm.io/package/toggle-provider · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
