open-index/open-npm huggingface dataset:
npm package: @ostera/reactor
Description: > A Reasonably-typed Actor-model Library for the Browser
Author: Leandro Ostera
Latest version: 0.0.1-alpha

# 🚀 re:actor
> A Reasonably-typed Actor-model Library for the Browser

**Status**: EXPERIMENT. Not ready to be used anywhere.

## Local Setup

Make sure you have `yarn` installed. Then run `make world` and that'll pull all
the deps and start the autocompilation.

Run `make serve` to start a tiny static file server to browse the examples.
npm package: @ostera/rebench
Description: > A benchmarking package for ReasonML
Author: Leandro Ostera
Latest version: 0.0.1-alpha

# :timer_clock: ReBench
> A benchmarking package for ReasonML

*Status*: Usable ALPHA. The default announcer and cycle printers are not the
most beautiful but they get the job done for now. Ideally in the future a
default on-complete handler will inspect the data and show the clear winner. But
this was the minimum I needed to start benchmarking some code.

## Usage

Begin by adding the package to your dev dependencies:

```sh
ostera/reactor λ yarn add rebench --dev
```

And including it in your `bsconfig.json` file too:

```json
{
  // ...
  "suffix": ".bs.js",
  "bs-dependencies": [
    "rebench",
  ],
  "warnings": {
    "error" : "+101"
  },
  // ... 
}
```

Now you're good! Make sure to run `bsb -make-world` :)

## Writting Benchmarks

You begin by creating a `ReBench` suite with `ReBench.make()`. To that suite you
can add as many test cases as you feel like with `add(name, test_case, suite)`.
This makes it possible to chain your calls and provides a very fluent API for
writting the benchmarks.

```reason
let run = size =>
  ReBench.(
    make()
    |> add("ReStruct.BatchedQueue.tail", tail_batched_queue(size))
    |> add("ReStruct.BankersQueue.tail", tail_bankers_queue(size))
    |> add("ReStruct.Lazy.RealTimeQueue.tail", tail_realtime_queue(size))
    |> on(Start, Utils.default_announcer(~size, ~name="Queue.Tail"))
    |> on(Cycle, Utils.default_printer)
    |> on(Complete, _e => Js.log("Done!"))
    |> run(run_opts(~async=false))
  );
```

Running this benchmark has the following output:

```sh
ostera/restruct λ make bench
Benchmark: Queue.Tail (size: 10)
 => ReStruct.BatchedQueue.tail - 365964 ops
 => ReStruct.BankersQueue.tail - 5512905 ops
 => ReStruct.Lazy.RealTimeQueue.tail - 3797100 ops

Benchmark: Queue.Tail (size: 1000)
 => ReStruct.BatchedQueue.tail - 3167 ops
 => ReStruct.BankersQueue.tail - 5572714 ops
 => ReStruct.Lazy.RealTimeQueue.tail - 3344608 ops

Benchmark: Queue.Tail (size: 100000)
 => ReStruct.BatchedQueue.tail - 12 ops
 => ReStruct.BankersQueue.tail - 5365455 ops
 => ReStruct.Lazy.RealTimeQueue.tail - 3057600 ops

Done!
```
npm package: @ostera/reiki
Description: > ReasonML bindings to Yoga Layout.
Author: Leandro Ostera
Latest version: 0.0.4-alpha

# 🧘 reiki
> ReasonML bindings to Yoga Layout.

*Status*: Usable ALPHA. 

Homepage: https://ostera.github.io/reiki

## Installation

```sh
ostera/reactor λ yarn add @ostera/reiki --save
```

And including it in your `bsconfig.json` file too:

```json
{
  // ...
  "suffix": ".bs.js",
  "bs-dependencies": [
    "@ostera/reiki",
  ],
  "warnings": {
    "error" : "+101"
  },
  // ... 
}
```

Now you're good! Make sure to run `bsb -make-world` and check the docs! :)
npm package: @ostera/restruct
Description: > Purely Functional[0] and Compact[1] Data Structures for ReasonML
Author: Leandro Ostera
Latest version: 0.0.1-alpha

# :floppy_disk: re:struct
> Purely Functional[0] and Compact[1] Data Structures for ReasonML

**Status**: EXPERIMENT. Not ready to be used anywhere really.

[0] [Okasaki's "Purely Functional Data Structures"](https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf)
[1] [Navarro's "Compact Data Structures"](https://www.dcc.uchile.cl/~gnavarro/CDSbook/)
npm package: @ostermann/eslint-config
Description: ESLint configurations
Latest version: 0.0.6

# ESLint Configuration

This is a group of shareable ESLint configurations.

## Usage

### Install the npm package in your repository

```bash
npm install --save-dev --save-exact @ostermann/eslint-config
```

### Install dependencies in your repository

These should be installed automatically with the package installation,
but it is useful to have `@eslint/js` and `eslint`
installed to allow for overriding the configuration.

```bash
npm install --save-dev @eslint/js eslint
```

### Use the base config

Create an `eslint.config.js` file in your project:

```js
import { defineConfig } from "eslint/config";

import { baseConfig } from "@ostermann/eslint-config";

export default defineConfig({
  extends: [baseConfig],
});
```

Or using a specific configuration:

```js
import { defineConfig } from "eslint/config";

import { baseConfig, tanstackRouterConfig } from "@ostermann/eslint-config";

export default defineConfig({
  extends: [baseConfig, tanstackRouterConfig],
});
```

### Override the base config in your own project

```js
import { defineConfig } from "eslint/config";

import { baseConfig } from "@ostermann/eslint-config";

export default defineConfig(
  {
    extends: [baseConfig],
  },
  // Your overrides here
  {
    files: ["**/*"],
    rules: {
      // import
      "import/no-default-export": "off",
    },
  },
);
```

---

## Contributing

### Get started

1. Install dependencies

```bash
npm install --workspace @ostermann/eslint-config
```

2. Build the project

```bash
npm run build --workspace @ostermann/eslint-config
```

### Creating or updating a config

1. Create or update the eslint configuration
2. Run the `npm run codegen:barrel --workspace @ostermann/eslint-config` command.
   This will update the [index.js](./src/index.js) to export the updated configuration.
3. Update the version in [package.json](./package.json)
4. Update the [CHANGELOG](./CHANGELOG.md)
5. Deploy the package with `npm run publish-eslint-config`

---

## External Links

- [ESLint](https://eslint.org/docs/latest/extend/shareable-configs)
npm package: @ostermann/prettier-config
Description: Prettier configurations
Latest version: 0.0.4

# Prettier Configuration

This is a group of shareable Prettier configurations.

## Usage

### Install the npm package in your repository

```bash
npm install --save-dev --save-exact @ostermann/prettier-config
```

### Install dependencies in your repository

These should be installed automatically with the package installation,
but it is useful to have `prettier` and `prettier-plugin-tailwindcss`
installed to allow for overriding the configuration.

```bash
npm install --save-dev prettier prettier-plugin-tailwindcss
```

### Use the base config

In your project's `package.json`:

```json
{
  "prettier": "@ostermann/prettier-config"
}
```

Or using a specific configuration:

```json
{
  "prettier": "@ostermann/prettier-config/frontend"
}
```

### Override the base config in your own project

If you want to extend or override the base config, create a `prettier.config.js` file in your project:

```js
// prettier.config.js
import baseConfig from "@ostermann/prettier-config";

export default {
  ...baseConfig,
  // Your overrides here
  printWidth: 100,
};
```

> **Note:** If you use a `prettier.config.js` file with `import`, your project must have `"type": "module"` in its `package.json`.

---

## Contributing

### Get started

1. Install dependencies

```bash
npm install --workspace @ostermann/prettier-config
```

2. Build the project

```bash
npm run build --workspace @ostermann/prettier-config
```

### Creating or updating a config

1. Create or update the prettier configuration
2. Update the version in [package.json](./package.json)
3. Update the [CHANGELOG](./CHANGELOG.md)
4. Run the build
5. Deploy the package with `npm run publish-prettier-config`

---

## External Links

- [Prettier](https://prettier.io/docs/sharing-configurations)