open-index/open-npm huggingface dataset:
npm package: @reason-native/pastel
Description: Native Reason ANSI terminal styling with an awesome API
Author: Facebook Engineering
Latest version: 0.3.0

# @reason-native/pastel

**Contains the following libraries and executables:**

```
@reason-native/pastel@0.0.0
│
├─test/
│   name:    TestPastel.exe
│   main:    TestPastel
│   require: pastel.lib
│
├─library/
│   library name: pastel.lib
│   namespace:    Pastel
│   require:
│
└─executable/
    name:    PastelApp.exe
    main:    PastelApp
    require: pastel.lib
```

## Developing:

```
npm install -g esy
git clone <this-repo>
esy install
esy build
```

## Running Binary:

After building the project, you can run the main binary that is produced.

```
esy x PastelApp.exe
```

## Running Tests:

```
# Runs the "test" command in `package.json`.
esy test
```
npm package: @reason-native/qcheck-rely
Description: Rely matchers for qcheck
Latest version: 1.0.2

# qcheck-rely

`qcheck-rely` contains custom Rely matchers that allow for easily using [QCheck](https://github.com/c-cube/qcheck) with Rely. QCheck is a "QuickCheck inspired property-based testing for OCaml, and combinators to generate random values to run tests on."

### Installation (assuming [esy](https://esy.sh/) for package management and dune for building)

You will want to add both `@opam/qcheck` and `@reason-native/qcheck-rely` to your `package.json` or `esy.json` file and
`qcheck-core` and `qcheck-rely` to your `dune` file.

### Usage

For writing QCheck tests, see [QCheck](https://github.com/c-cube/qcheck). Integration with Rely can be done as below:

```reason
open TestFramework;
open QCheckRely;

let {describe, _} = extendDescribe(QCheckRely.Matchers.matchers);

describe("qcheck-rely", ({test, _}) => {
  test("qcheck tests", ({expect}) => {
    let myQCheckTest = ...
    expect.ext.qCheckTest(myQCheckTest);
    ();
  });
  test("qcheck cells", ({expect}) => {
    let myQCheckCell = ...
    expect.ext.qCheckCell(myQCheckCell);
    ();
  });
  test("qcheck tests with custom random seed", ({expect}) => {
    let myQCheckTest = ...
    /* can also be specified by the QCHECK_SEED environment variable */
    let customRandomSeed = Random.State.make([|42|]);
    expect.ext.qCheckTest(~rand=customRandomSeed, myQCheckTest);
    ();
  });
```
npm package: @reason-react-native/clipboard
Description: ReScript bindings for @react-native-community/clipboard.
Latest version: 1.5.1

# `@reason-react-native/clipboard`

[![Build Status](https://github.com/reason-react-native/clipboard/workflows/Build/badge.svg)](https://github.com/reason-react-native/clipboard/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/clipboard.svg)](https://www.npmjs.com/@reason-react-native/clipboard)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`@react-native-community/clipboard`](https://github.com/react-native-clipboard/clipboard).

Exposed as `ReactNativeClipboard` module.

`@reason-react-native/clipboard` X.y.\* means it's compatible with
`@react-native-community/clipboard` X.y.\*

## Installation

When
[`@react-native-community/clipboard`](https://github.com/react-native-clipboard/clipboard)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/clipboard
# or
yarn add @reason-react-native/clipboard
```

`@reason-react-native/clipboard` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/clipboard"
  ],
  //...
}
```

## Usage

## Methods

### `getString`

To attempt reading content from the Clipboard; resolves to a `string` if
successful.

```reason
getString: unit => Js.Promise.t(string)
```

### `setString`

To copy a `string` to the Clipbard.

```reason
setString: string => unit
```

## Hooks

### `useClipboard`

```reason
useClipboard: unit => (string, string => unit)
```

#### Example

```reason
open ReactNative;

ReactNativeClipboard.setString("initial value");

let make = () => {
  let (data, setData) = ReactNativeClipboard.useClipboard();

  <View>
    <Button title=data onPress={_ => setData("new value")} />
  </View>

};
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/fetch-blob
Description: ReScript bindings for rn-fetch-blob.
Latest version: 0.12.1

# `@reason-react-native/fetch-blob`

[![Build Status](https://github.com/reason-react-native/fetch-blob/workflows/Build/badge.svg)](https://github.com/reason-react-native/fetch-blob/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/fetch-blob.svg)](https://www.npmjs.com/@reason-react-native/fetch-blob)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reasonml-community.github.io/reason-react-native/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`rn-fetch-blob`](https://github.com/joltup/rn-fetch-blob).

Exposed as `ReactNativeFetchBlob` module.

**⚠️ Incomplete bindings!**

`@reason-react-native/fetch-blob` X.y.\* means it's compatible with
`rn-fetch-blob` X.y.\*

## Installation

When [`rn-fetch-blob`](https://github.com/joltup/rn-fetch-blob) is properly
installed & configured by following their installation instructions, you can
install the bindings:

```console
npm install @reason-react-native/fetch-blob
# or
yarn add @reason-react-native/fetch-blob
```

`@reason-react-native/fetch-blob` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/fetch-blob"
  ],
  //...
}
```

## Usage

@todo

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

## Contribute

Read the [contribution guidelines](./CONTRIBUTING.md) before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](./CODE_OF_CONDUCT.md) so that you can understand what
actions will and will not be tolerated.
npm package: @reason-react-native/geolocation
Description: ReScript bindings for @react-native-community/geolocation.
Latest version: 2.0.2

# `@reason-react-native/geolocation`

[![Build Status](https://github.com/reason-react-native/geolocation/workflows/Build/badge.svg)](https://github.com/reason-react-native/geolocation/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/geolocation.svg)](https://www.npmjs.com/@reason-react-native/geolocation)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`@react-native-community/geolocation`](https://github.com/react-native-geolocation/react-native-geolocation).

Exposed as `ReactNativeGeolocation` module.

`@reason-react-native/geolocation` X.y.\* means it's compatible with
`@react-native-community/geolocation` X.y.\*

## Installation

When
[`@react-native-community/geolocation`](https://github.com/react-native-geolocation/react-native-geolocation)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/geolocation
# or
yarn add @reason-react-native/geolocation
```

`@reason-react-native/geolocation` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/geolocation"
  ],
  //...
}
```

## Note

On Android, this package uses the
[android.location API](https://developer.android.com/reference/android/location/package-summary),
which is slower and less accurate than the
[Google Location Services API](https://developer.android.com/training/location/).
While this may be addressed in the future, below alternatives already use the
latter API:

- [react-native-geolocation-service](https://github.com/Agontuk/react-native-geolocation-service)
- [react-native-location](https://github.com/timfpark/react-native-location)

## Use

Documentation is not available at this time.

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/image-picker
Description: ReScript bindings for react-native-image-picker.
Latest version: 2.3.4

# `@reason-react-native/image-picker`

[![Build Status](https://github.com/reason-react-native/image-picker/workflows/Build/badge.svg)](https://github.com/reason-react-native/image-picker/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/image-picker.svg)](https://www.npmjs.com/@reason-react-native/image-picker)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reasonml-community.github.io/reason-react-native/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-image-picker`](https://github.com/react-native-community/react-native-image-picker).

Exposed as `ReactNativeImagePicker` module.

`@reason-react-native/image-picker` X.y.\* means it's compatible with
`react-native-image-picker` X.y.\*

## Installation

When
[`react-native-image-picker`](https://github.com/react-native-community/react-native-image-picker)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/image-picker
# or
yarn add @reason-react-native/image-picker
```

`@reason-react-native/image-picker` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/image-picker"
  ],
  //...
}
```

## Usage

```reason
open ReactNativeImagePicker;

ImagePicker.(
  launchCamera(
    Options.make(
      ~title="Take a picture",
      ~cameraType=`back,
      ~mediaType=`photo,
      ~permissionDenied=
        Options.PermissionDenied.options(
          ~title="Permission denied !",
          ~text="text",
          ~reTryTitle="Retry",
          ~okTitle="Ok !",
        ),
      (),
    ),
    res => {
      Js.log(res##uri);
      Js.log(res##path);
    }
  )
);
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/inappbrowser
Description: ReScript bindings for react-native-inappbrowser
Latest version: 3.5.0

# `@reason-react-native/inappbrowser`

[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-inappbrowser-reborn`](https://github.com/proyecto26/react-native-inappbrowser).

Exposed as `ReactNativeInAppBrowser` module.

`@reason-react-native/inappbrowser` X.y.\* means it's compatible with
`react-native-inappbrowser-reborn` X.y.\*

## Installation

When
[`react-native-inappbrowser-reborn`](https://github.com/proyecto26/react-native-inappbrowser)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/inappbrowser
# or
yarn add @reason-react-native/inappbrowser
```

`@reason-react-native/inappbrowser` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/inappbrowser"
  ],
  //...
}
```

## Usage

```reason
open Js.Promise;
open ReactNativeInAppBrowser;

let opts = iosOptions(~preferredBarTintColor="#ff0000", ());
openBrowser("https://rescript-lang.org", `IosOptions(opts))
|> Js.Promise.then_((result: browserResult) => {
     Js.log(result.resultType);
     resolve();
   })
|> ignore;
```

```reason
open Js.Promise;
open ReactNativeInAppBrowser;

openAuthIos("https://example.com/auth", "myschema://auth", `IosOptions(iosOptions()))
|> Js.Promise.then_((result: authResult) => {
     switch (result.url) {
       | Some(url) => Js.log(url)
       | None => Js.log("Something went wrong")
     };
     resolve();
   })
|> ignore;
```

### Types

#### `authResult`

#### `browserResult`

#### `iosOptions`

#### `androidOptions`

### Methods

#### `ReactNativeInAppBrowser.openBrowser`

```reason
(string,  [ `AndroidOptions(androidOptions) | `IosOptions(iosOptions) ]) => Js.Promise.t(browserResult)
```

#### `ReactNativeInAppBrowser.close`

```reason
unit => unit
```

#### `ReactNativeInAppBrowser.openAuth`

```reason
(string, [ `AndroidOptions(androidOptions) | `IosOptions(iosOptions) ]) => Js.Promise.t(authResult)
```

#### `ReactNativeInAppBrowser.closeAuth`

```reason
unit => unit
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/keychain
Description: ReScript / Reason bindings for react-native-keychain
Author: Christoph Knittel
Latest version: 6.2.0

# `@reason-react-native/keychain`

[![Build Status](https://github.com/reason-react-native/keychain/workflows/Build/badge.svg)](https://github.com/reason-react-native/keychain/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/keychain.svg)](https://www.npmjs.com/@reason-react-native/keychain)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-keychain`](https://github.com/oblador/react-native-keychain).

Exposed as `ReactNativeSomething` module.

`@reason-react-native/keychain` X.y.\* means it's compatible with
`react-native-keychain` X.y.\*

## Installation

When [`react-native-keychain`](https://github.com/oblador/react-native-keychain)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/keychain
# or
yarn add @reason-react-native/keychain
```

`@reason-react-native/keychain` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/keychain"
  ],
  //...
}
```

## Usage

@todo

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/linear-gradient
Description: ReScript bindings for react-native-linear-gradient.
Latest version: 2.5.7

# `@reason-react-native/linear-gradient`

[![Build Status](https://github.com/reason-react-native/linear-gradient/workflows/Build/badge.svg)](https://github.com/reason-react-native/linear-gradient/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/linear-gradient.svg)](https://www.npmjs.com/@reason-react-native/linear-gradient)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reasonml-community.github.io/reason-react-native/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-linear-gradient`](https://github.com/react-native-linear-gradient/react-native-linear-gradient).

Exposed as `ReactNativeLinearGradient` module.

`@reason-react-native/linear-gradient` X.y.\* means it's compatible with
`react-native-linear-gradient` X.y.\*

## Installation

When
[`react-native-linear-gradient`](https://github.com/react-native-linear-gradient/react-native-linear-gradient)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/linear-gradient
# or
yarn add @reason-react-native/linear-gradient
```

`@reason-react-native/linear-gradient` should be added to `bs-dependencies` in
your `bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/linear-gradient"
  ],
  //...
}
```

## Usage

```reason
open ReactNative

module MyApp = {
  let styles = Style.(
    StyleSheet.create({
      "container": viewStyle(~flex=1., ())
    })
  );

  [@react.component]
  let make = () => {
    <ReactNativeLinearGradient colors=[|"#faa", "#afa"|] style=styles##container>
      <Text>
        "Hello world"->React.string
      </Text>
    </ReactNativeLinearGradient>
  }
};
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/paper
Description: ReScript bindings for react-native-paper.
Latest version: 3.0.5

# `@reason-react-native/paper`

[![Build Status](https://github.com/reason-react-native/paper/workflows/Build/badge.svg)](https://github.com/reason-react-native/paper/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/paper.svg)](https://www.npmjs.com/@reason-react-native/paper)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reasonml-community.github.io/reason-react-native/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-paper`](https://github.com/callstack/react-native-paper).

Exposed as `Paper` module.

`@reason-react-native/paper` X.y.\* means it's compatible with
`react-native-paper` X.y.\*

## Status

⚠️ Work in progress. These bindings are used successfully in several apps, but
are not complete yet and still subject to change.

[Checkout missing components](#implemented-components)

## Installation

When [`react-native-paper`](https://github.com/callstack/react-native-paper)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/paper
# or
yarn add @reason-react-native/paper
```

`@reason-react-native/paper` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/paper"
  ],
  //...
}
```

## Usage

### Components

```reason
[@react.component]
let make = () => {
  let (visible, setVisible) = React.useState(() => false);

  <Paper.Portal>
    <Paper.Dialog visible onDismiss={_ => setVisible(_ => false)}>
      <Paper.Dialog.Title>
        "Title"->React.string
      </Paper.Dialog.Title>
      <Paper.Dialog.Description>
        "Description"->React.string
      </Paper.Dialog.Description>
    </Paper.Dialog>
  </Paper.Portal>
};
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

## Contribute

Read the [contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md) before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md) so that you can understand what
actions will and will not be tolerated.

## Implemented components

- [x] ActivityIndicator
- [x] Avatar
- [x] Appbar
- [x] BottomNavigation
- [x] Badge
- [x] Banner
- [x] Button
- [x] Checkbox
- [x] Card
- [x] Chip
- [x] Dialog
- [x] Divider
- [x] FAB
- [ ] DataTable
- [x] Drawer
- [x] List
- [x] IconButton
- [x] Modal
- [ ] Menu
- [x] RadioButton
- [x] Searchbar
- [x] PaperProvider
- [x] Portal
- [x] ProgressBar
- [x] Snackbar
- [x] Surface
- [x] TextInput
- [x] TouchableRipple
- [x] ToggleButton
- [x] HelperText
- [x] ThemeProvider
- Typography
  - [x] Title
  - [x] Subheading
  - [x] Headline
  - [x] Paragraph
  - [x] Caption
  - [x] Text
npm package: @reason-react-native/permissions
Description: ReScript bindings for react-native-permissions.
Latest version: 2.2.1

# `@reason-react-native/permissions`

[![Build Status](https://github.com/reason-react-native/permissions/workflows/Build/badge.svg)](https://github.com/reason-react-native/permissions/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/permissions.svg)](https://www.npmjs.com/@reason-react-native/permissions)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reasonml-community.github.io/reason-react-native/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-permissions`](https://github.com/react-native-community/react-native-permissions).

Exposed as `ReactNativePermissions` module.

`@reason-react-native/permissions` X.y.\* means it's compatible with
`react-native-permissions` X.y.\*

## Installation

When
[`react-native-permissions`](https://github.com/react-native-community/react-native-permissions)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/permissions
# or
yarn add @reason-react-native/permissions
```

`@reason-react-native/permissions` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/permissions"
  ],
  //...
}
```

## Usage

```reason
open ReactNative;

let requestCamera = () => {
  ReactNativePermissions.(
    request(
      switch (Platform.os) {
      | os when os === "ios" => Ios.camera
      | _ => Android.camera
      },
    )
    |> Js.Promise.then_(permissionStatus =>
        switch (permissionStatus) {
        | status when status === granted => Js.Promise.resolve()
        | _ => Js.Promise.reject(Js.Exn.raiseError("permission error"))
        }
      )
    )
  );
};
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/react-native
Description: [BuckleScript](https://bucklescript.github.io) bindings for [React Native](https://github.com/facebook/react-native) allows to use [ReasonML](https://reasonml.github.io) with [ReasonReact](https://reasonml.github.io/reason-react/) to make your iOS, Androi
Latest version: 0.60.0

# Reason bindings for React Native

[BuckleScript](https://bucklescript.github.io) bindings for
[React Native](https://github.com/facebook/react-native) allows to use
[ReasonML](https://reasonml.github.io) with
[ReasonReact](https://reasonml.github.io/reason-react/) to make your iOS,
Android and [Web](https://github.com/necolas/react-native-web) apps.

## Getting Started

Check our
[getting started](https://reasonml-community.github.io/reason-react-native/en/docs/)
guide for details.

## Documentation

See https://reasonml-community.github.io/reason-react-native.
npm package: @reason-react-native/safe-area-view
Description: ReScript bindings for react-native-safe-area-view.
Latest version: 2.0.1

# `@reason-react-native/safe-area-view`

[![Build Status](https://github.com/reason-react-native/safe-area-view/workflows/Build/badge.svg)](https://github.com/reason-react-native/safe-area-view/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/safe-area-view.svg)](https://www.npmjs.com/@reason-react-native/safe-area-view)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reasonml-community.github.io/reason-react-native/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-safe-area-view`](https://github.com/react-navigation/react-native-safe-area-view).

Exposed as `ReactNativeSafeAreaView` module.

`@reason-react-native/safe-area-view` X.y.\* means it's compatible with
`react-native-safe-area-view` X.y.\*

## Installation

When
[`react-native-safe-area-view`](https://github.com/react-navigation/react-native-safe-area-view)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/safe-area-view
# or
yarn add @reason-react-native/safe-area-view
```

`@reason-react-native/safe-area-view` should be added to `bs-dependencies` in
your `bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/safe-area-view"
  ],
  //...
}
```

## Usage

⚠️ In order to avoid name collision (`SafeAreaView` is already defined in React
Native), the components are scoped in `SafeArea`. Checkout this example :

```reason
open ReactNative
open ReactNativeSafeAreaView;

module MyApp = {
  let styles = Style.(
    StyleSheet.create({
      "safeAreaView": viewStyle(~flex=1., ())
    })
  );

  [@react.component]
  let make = () => {
    <SafeArea.View style=styles##safeAreaView>
      <View>
        <Text>
          "Hello world"->React.string
        </Text>
      </View>
    </SafeArea.View>
  }
};

[@react.component]
let make = () => {
  <SafeArea.Provider>
    <MyApp />
  </SafeArea.Provider>
};
```

### Usage with forceInset

```reason
open ReactNative
open ReactNativeSafeAreaView;

[@react.component]
let make = () => {
  <SafeArea.View forceInset=SafeArea.View.inset(~top=`always, ())>
    <View>
      <Text>
        "Hello world"->React.string
      </Text>
    </View>
  </SafeArea.View>
};
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/slider
Description: ReScript bindings for @react-native-community/slider.
Latest version: 3.0.1-0.63

# `@reason-react-native/slider`

[![Build Status](https://github.com/reason-react-native/slider/workflows/Build/badge.svg)](https://github.com/reason-react-native/slider/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/slider.svg)](https://www.npmjs.com/@reason-react-native/slider)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`@react-native-community/slider`](https://github.com/callstack/react-native-slider).

Exposed as `ReactNativeSlider` module.

`@reason-react-native/slider` X.y.\* means it's compatible with
`@react-native-community/slider` X.y.\*

## Installation

When
[`@react-native-community/slider`](https://github.com/callstack/react-native-slider)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/slider
# or
yarn add @reason-react-native/slider
```

`@reason-react-native/slider` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/slider"
  ],
  //...
}
```

## Usage

```reason
ReactNativeSlider.make(
  ~style: ReactNative.Style.t=?,
  ~value: float=?,
  ~step: float=?,
  ~minimumValue: float=?,
  ~maximumValue: float=?,
  ~minimumTrackTintColor: string=?,
  ~maximumTrackTintColor: string=?,
  ~disabled: bool=?,
  ~onSlidingStart: float => unit=?,
  ~onSlidingComplete: float => unit=?,
  ~onValueChange: float => unit=?,
  ~testID: string=?,
  ~children: React.element=?,
  // iOS Props
  ~maximumTrackImage: ReactNative.Image.Source.t=?,
  ~minimumTrackImage: ReactNative.Image.Source.t=?,
  ~thumbImage: ReactNative.Image.Source.t=?,
  ~trackImage: ReactNative.Image.Source.t=?,
  ~inverted: bool=?,
  // Android
  ~thumbTintColor: string=?

  // ... And all <View> props
)
```

### Example

```reason
<ReactNativeSlider
  style={
    ReactNative.Style.(
      style(
        ~width=200.->dp,
        ~height=40.->dp,
        ()
      )
    )
  }
  minimumValue={0.}
  maximumValue={1.}
  minimumTrackTintColor="#FFFFFF"
  maximumTrackTintColor="#000000"
/>
```

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/svg
Description: ReScript bindings for react-native-svg.
Latest version: 12.1.6-0.63

# `@reason-react-native/svg`

[![Build Status](https://github.com/reason-react-native/svg/workflows/Build/badge.svg)](https://github.com/reason-react-native/svg/actions)
[![Version](https://img.shields.io/npm/v/@reason-react-native/svg.svg)](https://www.npmjs.com/@reason-react-native/svg)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

[ReScript](https://rescript-lang.org) / [Reason](https://reasonml.github.io) bindings for
[`react-native-svg`](https://github.com/react-native-community/react-native-svg).

Exposed as `ReactNativeSvg` module.

`@reason-react-native/svg` X.y.\* means it's compatible with `react-native-svg`
X.y.\*

## Installation

When
[`react-native-svg`](https://github.com/react-native-community/react-native-svg)
is properly installed & configured by following their installation instructions,
you can install the bindings:

```console
npm install @reason-react-native/svg
# or
yarn add @reason-react-native/svg
```

`@reason-react-native/svg` should be added to `bs-dependencies` in your
`bsconfig.json`:

```diff
{
  //...
  "bs-dependencies": [
    "reason-react",
    "reason-react-native",
    // ...
+    "@reason-react-native/svg"
  ],
  //...
}
```

## Usage

Supported :

- SvgXml
- SvgCss
- Svg
- Rect
- Circle
- Ellipse
- Line
- Polygon
- Polyline
- Path
- Text
- TextPath
- Tspan
- Use
- G
- Symbol
- Defs
- Image
- ClipPath
- LinearGradient
- Stop
- RadialGradient
- Mask
- Pattern
- Marker
- ForeignObject

See [definition](.src/ReactNativeSvg.re) for more details.

---

## Changelog

Check the [changelog](./CHANGELOG.md) for more informations about recent
releases.

---

## Contribute

Read the
[contribution guidelines](https://github.com/reason-react-native/.github/blob/master/CONTRIBUTING.md)
before contributing.

## Code of Conduct

We want this community to be friendly and respectful to each other. Please read
[our full code of conduct](https://github.com/reason-react-native/.github/blob/master/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
npm package: @reason-react-native/template
Description: React Native template for application developed with ReScript.
Latest version: 0.63.0

# `@reason-react-native/template`

[![Version](https://img.shields.io/npm/v/@reason-react-native/template.svg)](https://www.npmjs.com/@reason-react-native/template)
[![Chat](https://img.shields.io/discord/235176658175262720.svg?logo=discord&colorb=blue)](https://reason-react-native.github.io/discord/)

> React Native template for application developed with ReScript.

Please carefully read instructions below in order to enjoy Rescript development
experience.

## Setup

## Start a Reason React Native project with this template

```console
npx @react-native-community/cli init MyApp --template @reason-react-native/template
cd MyApp
```

Now that you are ready to go, you can check our documentation on
[how to use Reason React Native](https://reason-react-native.github.io/en/docs/usage/).
npm package: @reasonabletech/config-tsup
Description: Shared tsup configuration for ReasonableTech packages
Author: Reasonable Tech Company
Latest version: 0.1.2

# @reasonabletech/config-tsup

[![npm version](https://img.shields.io/npm/v/@reasonabletech/config-tsup.svg)](https://www.npmjs.com/package/@reasonabletech/config-tsup)
[![npm downloads](https://img.shields.io/npm/dm/@reasonabletech/config-tsup.svg)](https://www.npmjs.com/package/@reasonabletech/config-tsup)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue.svg)](https://www.typescriptlang.org/)

`@reasonabletech/config-tsup` provides shared `tsup` configuration factories for library and tooling packages. The defaults produce ESM-only output with declaration files, targeting a neutral platform — override only the options that differ from those defaults.

## Installation

```bash
pnpm add -D @reasonabletech/config-tsup tsup typescript
```

## Peer Dependencies

| Dependency | Version   | Required |
| ---------- | --------- | -------- |
| tsup       | >= 8.0    | Yes      |
| typescript | >= 5.0    | Yes      |

This package generates tsup configuration objects and requires tsup 8.0+ for ESM-first defaults and TypeScript 5.0+ for type checking.

## Exported API

```ts
import {
  createTsupConfig,
  configPackageConfig,
  nodeConfig,
  reactConfig,
  type EsbuildOptionsFunction,
  type TsupConfigOptions,
} from "@reasonabletech/config-tsup";
```

## Usage

### Default Library Configuration

```ts
// tsup.config.ts
import { createTsupConfig } from "@reasonabletech/config-tsup";

export default createTsupConfig();
```

### Customized Configuration

```ts
// tsup.config.ts
import { createTsupConfig } from "@reasonabletech/config-tsup";

export default createTsupConfig({
  dts: true,
  entry: { index: "src/index.ts" },
  external: ["react"],
});
```

### Preset Configurations

```ts
import {
  configPackageConfig,
  nodeConfig,
  reactConfig,
} from "@reasonabletech/config-tsup";

export default reactConfig;
```

## Defaults

`createTsupConfig()` defaults to:

- `entry: { index: "src/index.ts" }`
- `format: ["esm"]`
- `platform: "neutral"`
- `target: "ES2023"`
- `sourcemap: true`
- `treeshake: true`
- `splitting: false`
- `clean: false`

If `tsconfig` is omitted, the factory uses `tsconfig.build.json` automatically when present.

## Changelog

See [CHANGELOG.md](./CHANGELOG.md) for release history.

This package follows [Semantic Versioning](https://semver.org/). Breaking changes are documented with migration guides when applicable.

## Additional References

- [Usage Guide](./docs/guides/usage-guide.md)
- [Package Docs](./docs/README.md)
npm package: @reasonai/cli
Description: A simple tool for creating AI-based APIs
Author: Joseph Anane
Latest version: 1.1.0

# Reasonai CLI

![NPM Version](https://img.shields.io/npm/v/%40reasonai%2Fcli)

A CLI tool to create AI-based APIs

## Documentation

Full documentation here [https://docs.reasonai.dev](https://docs.reasonai.dev)

## Changelog

Details on changes for each release can be found in the [CHANGELOG.md](https://github.com/reasonai/cli/blob/main/CHANGELOG.md)

## Contribution

Please make sure to read the [Contributing Guide](https://github.com/reasonai/cli/blob/main/CONTRIBUTING.md) before making a pull request.

## License

[MIT](https://github.com/reasonai/cli/blob/main/LICENSE)
npm package: @reasonbr/bs-react-reveal
Description: ReasonML bindings for ReactReveal
Author: Marcos Oliveira
Latest version: 0.0.2

<p align="center">
  <br />
  <img src="./assets/logo.svg" width="450" /> 
</p>
<p align="center">
   <a href="#installation">Installation</a> • 
   <a target="_blank" href="#usage">Basic usage</a> • 
   <a href="#supported-features">Supported features</a>
</p>
<br/>
<br/>

## Installation

```sh
yarn add @reasonbr/bs-react-reveal react-reveal
```
Add the package to the `bsconfig.json`
```json
{
 "bs-dependencies": [
  "@reasonbr/bs-react-reveal"
 ]
}
```

## Usage

```reason
open ReactReveal;

[@react.component]
let make = () => {
  <Fade>
   <h1>{React.string("Fade animation...")</h1>
  </Fade>
}
```
## Status
This is project is still `WIP`, but you can use all the components provided by [react-reveal](https://www.react-reveal.com/) with the almost all props.
### Supported features
- Components:
  - `Reveal`: ⚠️ - Not yet `[WIP]`
  - `Fade`: ✅
  - `Flip`: ✅
  - `Rotate`: ✅
  - `Zoom`: ✅
  - `Bounce`: ✅
  - `Slide`: ✅
  - `Roll`: ✅
  - `LightSpeed`: ✅
  - `Jump`: ✅
  - `Flash`: ✅
  - `HeadShake`: ✅
  - `Jello`: ✅
  - `Pulse`: ✅
  - `RubberBand`: ✅
  - `Shake`: ✅
  - `Spin`: ✅
  - `Swing`: ✅
  - `Tada`: ✅
  - `Wobble`: ✅
- Component props:
    - `duration`: ✅
    - `delay`: ✅
    - `left`: ✅
    - `right`: ✅
    - `top`: ✅
    - `bottom`: ✅
    - `count`: ✅
    - `forever`: ✅
    - `mirror`: ✅
    - `opposite`: ✅
    - `distance`: ✅
    - `spy`: ✅ ⚠️ - Only int values for now `[WIP]`
    - `when`: ✅ ⚠️ - Only bool values for now `[WIP]`
    - `in`: ✅ - ⚠️ Only bool values for now `[WIP]`
    - `appear`: ✅
    - `enter`: ✅
    - `exit`: ✅
    - `timeout`: ✅
    - `mountOnEnter`: ✅
    - `unmountOnExit`: ✅
    - `force`: ✅
    - `refProp`: ⚠️ - Not yet `[WIP]`
    - `innerRef`: ⚠️ - Not yet `[WIP]`
    - `cascade`: ✅ 
    - `collapse`: ✅
    - `fraction`: ✅
    - `ssrFadeout`: ✅
    - `ssrReveal`: ✅
    - `wait`: ✅
    - `onReveal`: ✅
- `HOC's`: ⚠️ - Not yet `[WIP]`
- `Custom effects`: ⚠️ - Not yet `[WIP]`

## Docs
Check the official [react-reveal](https://www.react-reveal.com/docs/) documentation.
npm package: @reasonbr/bs-toastify
Description: ReasonML bindings for ReactToastify
Author: Arthur barroso
Latest version: 0.0.1

# bs-toastify
ReasonML bindings for [`react-toastify`](https://fkhadra.github.io/react-toastify/introduction/)

## Installation
First run the below commands to install the dependencies:
```bash
yarn add @reasonbr/bs-toastify -D
yarn add react-toastify
```
Import react-toastify's css somewhere in your code. You can use `[%bs.raw]` if you want to.
```js
import "react-toastify/dist/ReactToastify.css";
```

## Examples
```reason
open ReactToastify;

[@react.component]
let make = () => {
  let handleClick = () => {
    let cb = {
      Js.log("Cool");
      ();
    };
    toast->success(
      "Success",
      ReactToastify.options(
        ~autoClose=3000,
        ~hideProgressBar=false,
        ~closeOnClick=false,
        ~onClose=cb,
        (),
      ),
    );

    toast->warning(
      "Warning",
      ReactToastify.options(
        ~autoClose=3000,
        ~position=`topRight,
        ~hideProgressBar=false,
        ~closeOnClick=false,
        (),
      ),
    );
    ();
  };

  <>
    <ToastContainer position=`topRight autoClose=3000 transition=flip />
    <h1> {"Hello" |> ReasonReact.string} </h1>
    <button onClick={_ => handleClick()}>
      {"Click" |> ReasonReact.string}
    </button>
  </>;
};

let default = make;
```
npm package: @reasonbr/reform
Description: Reasonably making forms with ReScript and React sound good
Author: Astrocoders
Latest version: 11.0.0-alpha.1

# `bs-reform`
[![Build Status](https://app.bitrise.io/app/7a8015b7814278c9/status.svg?token=dAyLaVmb7EOTtNXLitKKlg&branch=master)](https://app.bitrise.io/app/7a8015b7814278c9)

Check more at https://github.com/Astrocoders/reform
npm package: @reasoningco/infer
Description: TypeScript SDK for natural language to SQL — secure, auto-introspecting, production-ready
Author: The Reasoning Company
Latest version: 0.1.6

# @reasoningco/infer

TypeScript SDK that turns natural language questions into safe, parameterized SQL — powered by LLMs, locked down by an 8-layer security pipeline.

## Install

```bash
npm install @reasoningco/infer
```

## Usage

```ts
import { Infer, PostgresConnector } from '@reasoningco/infer';

const infer = new Infer({
  connector: new PostgresConnector({
    connectionString: process.env.DATABASE_URL,
  }),
  llm: { provider: 'openrouter', apiKey: process.env.LLM_API_KEY },
  tenantId: 'tenant_123',
});

const result = await infer.ask('revenue by month last quarter');
console.log(result.rows);

await infer.close();
```

## Security

Every query passes through 8 layers before touching your database:

**Input validation** → **LLM planner** → **Plan validator** → **Entity resolver** → **SQL compiler** → **SQL validator** → **Secure executor** → **Result sanitizer**

## LLM Providers

OpenRouter, OpenAI, Anthropic, and Ollama supported out of the box.

## License

MIT — see [LICENSE](./LICENSE)
npm package: @reasoningco/infer-cli
Description: CLI for schema discovery and querying with Infer SDK
Author: The Reasoning Company
Latest version: 0.1.6

# @reasoningco/infer-cli

CLI for schema discovery and querying with the Infer SDK.

## Install

```bash
npm install -g @reasoningco/infer-cli
```

## Usage

```bash
infer-cli introspect --connection postgresql://...
infer-cli generate-schema --connection postgresql://...
infer-cli ask "top 10 customers by revenue" --connection postgresql://...
infer-cli validate --schema ./infer-schema.yaml
```

## License

MIT — see [LICENSE](./LICENSE)
npm package: @reasoningco/infer-react
Description: React hooks and components for the Infer SDK
Author: The Reasoning Company
Latest version: 0.1.6

# @reasoningco/infer-react

React hooks and components for the Infer SDK — QueryBar, AutoChart, ResultsTable, and more.

## Install

```bash
npm install @reasoningco/infer-react @reasoningco/infer react
```

## Usage

```tsx
import { InferProvider, useInferQuery, AutoChart, ResultsTable, QueryBar } from '@reasoningco/infer-react';

function Dashboard() {
  const { status, result, handleSubmit, getInputProps } = useInferQuery();

  return (
    <div>
      <QueryBar onSubmit={handleSubmit} inputProps={getInputProps()} />
      {result && <AutoChart result={result} />}
      {result && <ResultsTable result={result} />}
    </div>
  );
}
```

## License

MIT — see [LICENSE](./LICENSE)
npm package: @reasonink/clack
Description: A keyboard shortcut library for Typescript & Javascript.
Author: Oliver Heard
Latest version: 0.0.3

# Clack

Clack is a modern keyboard shortcut library written in Typescript (so type
definitions come for free).

# Usage

```typescript
import clack from "@reasonink/clack";

// A simple keyboard shortcut.
const ctrlB = clack.shortcut("ctrl + b", (e: KeyboardEvent) => {
    e.preventDefault();
    alert("ctrl + b pressed");
});

// Enable/disable the shortcut. Shortcuts are enabled by default.
ctrlB.enabled = false;

// A group of shortcuts that can be enabled/disabled all at once.
const editorShortcuts = clack.group({
    "ctrl + b": (e: KeyboardEvent) => { /* make bold */ },
    "ctrl + i": (e: KeyboardEvent) => { /* make italic */ },
    "ctrl + u": (e: KeyboardEvent) => { /* underline */ }
});

// Disable the entire group until the editor is focused.
editorShortcuts.enabled = false;
```
npm package: @reasonink/clack-react
Description: React support for @reasonink/clack
Author: Oliver Heard
Latest version: 0.0.2

# React support for @reasonink/clack

This package provides two React components that enable keyboard shortcuts in
React.

## Installation

Install with `npm install @reasonink/clack-react` or, if using yarn
`yarn add @reasonink/clack-react`.

Older versions of npm require the `--save` flag in order to add the
package to `dependencies` in your `package.json`.

## Usage

In the following example we create a component `MyComponent` that wraps
`MyOtherComponent` with three keyboard shortcuts. Whenever `MyOtherComponent`
or any of its children are focused the three shortcuts will be enabled.

```tsx
import { Keyboard, KeyCombo } from "@reasonink/clack-react";

function MyComponent(props: {}) {
    return <Keyboard>
        <KeyCombo c="ctrl + b" onPress={() => /* handle */ } />
        <KeyCombo c="ctrl + i" onPress={() => /* handle */ } />
        <KeyCombo c="ctrl + u" onPress={() => /* handle */ } />
        <MyOtherComponent />
    </Keyboard>;
}
```

## Components

Two components are provided. `Keyboard` is a wrapper for one or more
`KeyCombo` elements and a single other element that is the target of the
keyboard shortcuts.

### Keyboard

Renders a `<div class="keyboard">` containing the single non-`KeyCombo` child.
Does not support any additional props.

### KeyCombo

Specifies a keyboard shortcut. The following props are supported:

<dl>
    <dt>c</dt>
    <dd>A string specifying the key combo.</dd>
    <dt>onPress(e: KeyboardEvent)</dt>
    <dd>A function that is invoked when the key combo is pressed by the user.</dd>
    <dt>global</dt>
    <dd>A boolean specifying whether or not the key combo is global (default:
    false). A global shortcut is active even if the child of
    <code>&lt;Keyboard&gt;</code> is not focused.</dd>
    <dt>preventDefault</dt>
    <dd>A boolean indicating whether <code>e.preventDefault()</code> is
    invoked automatically (default: true).</dd>
</dl>

## License

This library is made available under the MIT license. See the LICENSE file for
details.