open-index/open-npm huggingface dataset:
npm package: @ricanontherun/circuit-breaker
Description: Conditionally call a function depending on the state of the circuit.
Author: Christian Roman
Latest version: 1.1.0

# Circuit Breaker

Conditionally call a function depending on the state of the circuit.

## States

### Closed (default state)

All calls are made. If an Error is thrown by the function, the circuit may open according to the following rule:

1. If the number of `consecutive` failed calls (thrown Error) is greater than or equal to the configured `openThreshold`, the circuit will `open`.

### Open

No calls are made. Instead, a default error is thrown. **Note**: As soon as the circuit transitions into the `open` state, a timer is started which will automatically transition the circuit into the `half open` state after `halfOpenTimeout` milliseconds.

### Half Open

A semipermeable state in which only `halfOpenCallRate` percentage of calls are made. The calls which are allowed to be made are observed, and the circuit will `close` or `open` depending on the following rules:

1. If the number of `consecutive` failed calls (thrown Error) is greater than or equal to the configured `openThreshold`, the circuit will `open`.
2. If the number of `consecutive` successful calls is greater than or equal to the configured `closeThreshold`, the circuit will `close`.

## Installation
```
npm i @ricanontherun/circuit-breaker
```

## Example Usage
```typescript
import {CircuitBreaker} from '@ricanontherun/circuit-breaker';

const circuitBreaker = new CircuitBreaker(async () => {
  callSomeDownstreamService(); // Might throw.
}, { // Options.
     // Close the circuit after 10 consecutive successful calls (no throw)
     closeThreshold: 10,

     // Open the circuit (if closed/half-open) after 5 consecutive failed calls.
     openThreshold: 5,

     // Automatically transition from closed to half-open after 5 seconds.
     halfOpenTimeout: 5000,

     // When the circuit is half-open, only allow 80% of calls to be made.
     halfOpenCallRate: 80.0,
});

await circuitBreaker.call();
await circuitBreaker.callOrDefault('default value if open');
```
npm package: @ricarcarvalho/components-library
Description: This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Latest version: 3.1.0

# React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

- Configure the top-level `parserOptions` property like this:

```js
export default tseslint.config({
  languageOptions: {
    // other options...
    parserOptions: {
      project: ['./tsconfig.node.json', './tsconfig.app.json'],
      tsconfigRootDir: import.meta.dirname,
    },
  },
})
```

- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked`
- Optionally add `...tseslint.configs.stylisticTypeChecked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config:

```js
// eslint.config.js
import react from 'eslint-plugin-react'

export default tseslint.config({
  // Set the react version
  settings: { react: { version: '18.3' } },
  plugins: {
    // Add the react plugin
    react,
  },
  rules: {
    // other rules...
    // Enable its recommended rules
    ...react.configs.recommended.rules,
    ...react.configs['jsx-runtime'].rules,
  },
})
```