open-index/open-npm huggingface dataset:
npm package: @seboran/vue-coverage-overlay
Description: Vite plugin to visualize Vue component test coverage directly on the page
Author: Nirina
Latest version: 0.1.1

# @seboran/vue-coverage-overlay

A Vite plugin that visualizes Vue component test coverage directly on your running application. No browser extension needed.

## Features

- 📊 **Visual coverage overlay** - See which components have test coverage at a glance
- 🎨 **Color-coded** - Green (80%+), Yellow (60-79%), Orange (40-59%), Red (<40%)
- 🔘 **Toggle button** - Floating button to enable/disable overlays
- ⌨️ **Keyboard shortcut** - `Ctrl+Shift+C` to toggle (configurable)
- 💾 **Persistent state** - Remembers your preference across reloads
- 🚀 **Works with SSR** - Compatible with Nuxt and other SSR frameworks

## Installation

```bash
npm install @seboran/vue-coverage-overlay --save-dev
# or
pnpm add -D @seboran/vue-coverage-overlay
```

## Usage

### Vite

```js
// vite.config.js
import { vueCoverageOverlay } from '@seboran/vue-coverage-overlay'

export default {
  plugins: [
    vueCoverageOverlay()
  ]
}
```

### Nuxt

```ts
// nuxt.config.ts
import { vueCoverageOverlay } from '@seboran/vue-coverage-overlay'

export default defineNuxtConfig({
  vite: {
    plugins: [
      vueCoverageOverlay()
    ]
  }
})
```

## Configuration

```js
vueCoverageOverlay({
  // Path to coverage file (relative to project root)
  coveragePath: 'coverage/coverage-final.json',
  
  // Endpoint to serve coverage data
  endpoint: '/__coverage',
  
  // Keyboard shortcut to toggle overlay
  shortcut: 'ctrl+shift+c',
  
  // Enable overlay by default on page load
  enabledByDefault: false
})
```

## Vitest Configuration

Make sure Vitest outputs coverage in JSON format:

```js
// vitest.config.js
export default {
  test: {
    coverage: {
      reporter: ['json', 'html'], // 'json' is required
      reportsDirectory: 'coverage'
    }
  }
}
```

## How It Works

1. **Run tests with coverage**: `pnpm test:coverage`
2. **Start dev server**: `pnpm dev`
3. **Click the 📊 button** (bottom-right) or press `Ctrl+Shift+C`
4. **See coverage overlays** on your Vue components

The plugin:
- Serves coverage data at `/__coverage`
- Injects a client script that scans for Vue components
- Applies colored outlines based on coverage percentage
- Updates dynamically as you navigate

## Color Legend

| Color | Coverage |
|-------|----------|
| 🟢 Green | 80%+ |
| 🟡 Yellow | 60-79% |
| 🟠 Orange | 40-59% |
| 🔴 Red | < 40% |

## License

MIT
npm package: @sebousan/hugo-maintenance-bot
Description: Automated maintenance bot for Hugo websites (module updates, screenshots, PRs)
Author: Sébastien Moulène
Latest version: 1.0.6

<img width="1280" height="640" alt="Hugo Maintenance Bot" src="https://github.com/user-attachments/assets/869bcfde-5005-4347-82cd-ace81bf2700b" />

# Hugo Maintenance Bot

[![npm version](https://badge.fury.io/js/@sebousan%2Fhugo-maintenance-bot.svg)](https://www.npmjs.com/package/@sebousan/hugo-maintenance-bot)


An automated maintenance bot for Hugo websites.

It handles:

- Updating Hugo modules
- Taking screenshots (before/after)
- Comparing screenshots
- Creating Pull Requests with visual diffs
- Merge automatically if there is no diffs
- Creating content markdown page (for your maintenance report website)

## Installation

```bash
npm install hugo-maintenance-bot
# or
yarn add hugo-maintenance-bot
```

## Usage

```bash
# Process all sites in the datas directory
npx hugo-maintenance

# Process all sites in a specific folder : datas/folder
npx hugo-maintenance folder

# Process a specific site : datas/folder/website.yaml
npx hugo-maintenance website
```

## Configuration

The bot expects a `datas/` directory in the current working directory containing site configurations in YAML format.

Example site config (`datas/folder/website.yaml`):

```yaml
title: My Site
name: mysite
repository:
  branch: main
  provider: github
  repo: username/repo
website:
  url: https://www.mysite.com
  pages:
    - /
    - /contact/
screenshots:
  - mobile
  - tablet
  - laptop
```

## Environment Variables

- `GH_TOKEN`: GitHub Personal Access Token (required for PR creation and cross-repo operations)
- `GIT_USER_EMAIL`: Git user email (required for PR creation)
- `GIT_USER_NAME`: Git user name (required for PR creation)

## GitHub Actions

You can automate the maintenance using GitHub Actions. An example workflow is provided in [examples/github-action.yml](examples/github-action.yml).

This workflow:

1. Runs on a schedule (e.g., every 2 months)
2. Sets up Node.js and Hugo
3. Installs dependencies and Playwright browsers
4. Runs the maintenance script for your websites
npm package: @sebowy/async-array
Description: "AsyncArray" - Run array higher order functions asynchronously
Author: Sebastian Kubiak
Latest version: 1.1.0

<h1 align="center" style="border-bottom: none;">AsyncArray</h1>
<h3 align="center">Run array higher order functions asynchronously</h3>
<p align="center">
  <a href="https://www.npmjs.com/package/@sebowy/async-array"><img alt="npm latest version" src="https://img.shields.io/npm/v/@sebowy/async-array/latest.svg"></a>
  <a href="https://github.com/sebastianowy/async-array/actions?query=workflow%3ATest+branch%3Amain"><img alt="Build states" src="https://github.com/sebastianowy/async-array/workflows/Test/badge.svg"></a>
  <a href="https://github.com/semantic-release/semantic-release"><img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg"></a>
</p>

## Installation

```bash
npm install --save @sebowy/async-array
# or
yarn add @sebowy/async-array
```

## Usage

### Examples

- async sorting

```js
import { AsyncArray } from "@sebowy/async-array";

const array = [3, 5, 1, 2, 4];
const asyncArray = new AsyncArray(array);
asyncArray
  .sort((left, right) => Promise.resolve(left - right))
  .then(console.log);
```

will produce:

```bash
[1, 2, 3, 4, 5]
```
npm package: @sebowy/builder-guard
Description: "BuilderGuard" organizes promises execution
Author: Sebastian Kubiak
Latest version: 1.0.1

<h1 align="center" style="border-bottom: none;">Builder Guard</h1>
<h3 align="center">Uses TypeScript to guard builders when providing data</h3>
<p align="center">
  <a href="https://www.npmjs.com/package/@sebowy/builder-guard"><img alt="npm latest version" src="https://img.shields.io/npm/v/@sebowy/builder-guard/latest.svg"></a>
  <a href="https://github.com/sebastianowy/builder-guard/actions?query=workflow%3ATest+branch%3Amain"><img alt="Build states" src="https://github.com/sebastianowy/builder-guard/workflows/Test/badge.svg"></a>
  <a href="https://github.com/semantic-release/semantic-release"><img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg"></a>
</p>

## Installation

```bash
npm install --save @sebowy/builder-guard
# or
yarn add @sebowy/builder-guard
```

## Usage

### Examples

- examples with timeouts

```js
import createBuilderGuard, { Builder } from '@sebowy/builder-guard';

interface ICarData {
  color: 'red' | 'green' | 'blue';
  doors: 3 | 5;
  engine: 'V6' | 'V8';
}

interface ICarTypeResult {
  carType: 'sport' | 'van';
}

class CarTypeBuilder extends Builder<ICarData, ICarTypeResult> {
  build(): ICarTypeResult {
    if (this.isSportCar()) {
      return { carType: 'sport' };
    }
    return { carType: 'van' };
  }

  private isSportCar(): boolean {
    return this._data.color === 'red' && this._data.engine === 'V8' && this._data.doors === 3;
  }
}

const builder = createBuilderGuard(CarTypeBuilder);
const carTypeResult = builder
  .color('red')
  .doors(3)
  .engine('V8')
  // build method is not available until all properties are set
  .build();
```
npm package: @sebowy/concurrent-array
Description: "ConcurrentArray" - Run array higher order functions asynchronously with concurrency control
Author: Sebastian Kubiak
Latest version: 1.0.0

<h1 align="center" style="border-bottom: none;">ConcurrentArray</h1>
<h3 align="center">Run array higher order functions asynchronously with concurrency control</h3>
<p align="center">
  <a href="https://www.npmjs.com/package/@sebowy/concurrent-array"><img alt="npm latest version" src="https://img.shields.io/npm/v/@sebowy/concurrent-array/latest.svg"></a>
  <a href="https://github.com/sebastianowy/concurrent-array/actions?query=workflow%3ATest+branch%3Amain"><img alt="Build states" src="https://github.com/sebastianowy/concurrent-array/workflows/Test/badge.svg"></a>
  <a href="https://github.com/semantic-release/semantic-release"><img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg"></a>
</p>

## Installation

```bash
npm install --save @sebowy/concurrent-array
# or
yarn add @sebowy/concurrent-array
```

## Usage

### Examples

- async sorting

```js
import { ConcurrentArray } from "@sebowy/concurrent-array";

const array = [3, 5, 1, 2, 4];
const asyncArray = new ConcurrentArray(array, {
  maxConcurrency: 10,
});
asyncArray
  .sort((left, right) => new Promise((resolve) => setTimeout(() => resolve(left - right), 1000)), {
    maxConcurrency: 5, // overwrite max concurrency for sort array operation
  })
  .then(console.log);
```

will produce:

```bash
[1, 2, 3, 4, 5]
```

respecting allowed maximum concurrency.

### Learn more

Please refer to [@sebowy/concurrent-queue](https://www.npmjs.com/package/@sebowy/concurrent-queue) and [@sebowy/async-array](https://www.npmjs.com/package/@sebowy/async-array) README files to learn more about possible options and methods.
npm package: @sebscode/expo-local-gyro
Description: Use your MacBook's gyroscope in iOS Simulator. Works with Expo Go.
Latest version: 0.1.0

# expo-local-gyro

Use your MacBook's gyroscope in iOS Simulator. Works with Expo Go.

## Quick Start

1. **Install the package**

   ```bash
   npm install expo-local-gyro
   ```

2. **Run MacGyroServer on your Mac**

   ```bash
   sudo MacGyroServer
   ```

3. **Change your import**

   ```js
   // Before
   import { Gyroscope, Accelerometer } from 'expo-sensors';
   // After
   import { Gyroscope, Accelerometer } from 'expo-local-gyro';
   ```

   That's it. The API is identical to expo-sensors.

## How It Works

expo-local-gyro connects to MacGyroServer via WebSocket (`localhost:9877`) to receive real IMU data from your MacBook's built-in gyroscope and accelerometer. The data is bridged into your React Native app using the same API as expo-sensors.

If MacGyroServer isn't running, the package automatically falls back to expo-sensors — your app continues to work without changes.

## API

Same as [expo-sensors Gyroscope](https://docs.expo.dev/versions/latest/sdk/gyroscope/) and [Accelerometer](https://docs.expo.dev/versions/latest/sdk/accelerometer/):

- `Gyroscope.addListener(callback)` — subscribe to gyroscope data
- `Gyroscope.setUpdateInterval(ms)` — set update frequency
- `Gyroscope.isAvailableAsync()` — check if sensor is available
- `Accelerometer.addListener(callback)` — subscribe to accelerometer data
- `Accelerometer.setUpdateInterval(ms)` — set update frequency
- `Accelerometer.isAvailableAsync()` — check if sensor is available

All other expo-sensors exports (Barometer, DeviceMotion, Magnetometer, etc.) are re-exported unchanged.

## Requirements

- Apple Silicon MacBook (M2 or later) with built-in IMU
- MacGyroServer running with `sudo`
- iOS Simulator (Xcode)

## Note

On Android, web, and real iOS devices, this package is a transparent passthrough to expo-sensors. No WebSocket connection is attempted — it just works as if you imported expo-sensors directly.