open-index/open-npm huggingface dataset:
npm package: @jhead/homebridge-litter-robot-4
Description: Whisker Litter Robot 4 Homebridge Plugin
Author: Justin Head
Latest version: 0.1.1

# Homebridge Litter Robot 4

This is a [Homebridge](https://github.com/homebridge/homebridge) plugin that allows you to control your Litter Robot 4 from HomeKit.

Forked from [ryanleesmith/homebridge-litter-robot-connect](https://github.com/ryanleesmith/homebridge-litter-robot-connect) and updated for Whisker's current GraphQL APIs for Litter Robot 4.

## Features

- Control your Litter-Robot 4 from HomeKit
- Monitor waste drawer level
- Control night light
- Monitor cat presence
- Monitor waste drawer status
- Reset waste drawer level gauge
- Monitor cat weight

## Installation

1. Install Homebridge using `npm install -g homebridge`
2. Install this plugin using `npm install -g @jhead/homebridge-litter-robot-4`
3. Update your Homebridge configuration file with your Whisker app credentials

## Configuration

Add the following to your Homebridge config.json:

```json
{
  "platforms": [
    {
      "platform": "LitterRobotPlatform",
      "username": "your-email@example.com",
      "password": "your-password",
      "hideRobotAccessory": false,
      "hideNightlightAccessory": false,
      "hideOccupancyAccessory": false,
      "hideTrayAccessory": true,
      "pollingFrequency": 300
    }
  ]
}
```

### Configuration Options

- `username`: Your Litter-Robot account email (required)
- `password`: Your Litter-Robot account password (required)
- `hideRobotAccessory`: Hide the main robot accessory which provides general control and status updates (default: false)
- `hideNightlightAccessory`: Hide the accessory which allows you to turn on and off the nightlight (default: false)
- `hideOccupancyAccessory`: Hide the accessory which indicates your pet entered the Litter-Robot (default: false)
- `hideTrayAccessory`: Hide the accessory which indicates your Litter-Robot tray is full (default: true)
- `pollingFrequency`: How frequently (in seconds) the platform will poll the Litter-Robot API for current status (default: 300)

## Development

This plugin is written in TypeScript and uses modern Node.js features. To contribute:

1. Clone this repository
2. Install dependencies: `npm install`
3. Build the project: `npm run build`
4. Run tests: `npm test`
5. Lint the code: `npm run lint`
6. Format the code: `npm run format`

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- [ryanleesmith/homebridge-litter-robot-connect](https://github.com/ryanleesmith/homebridge-litter-robot-connect) for the original implementation for Litter Robot 3 Connect
- [Homebridge](https://github.com/nfarina/homebridge) for the HomeKit integration framework
- [Litter-Robot](https://www.litter-robot.com/) for the awesome product
npm package: @jhead/vapor
Description: Multi-stage web scraping and data extraction with simple and declarative YAML.
Author: jhead
Latest version: 0.1.2

# Vapor

Multi-stage web scraping and data extraction with simple and declarative YAML.

## Installation

`yarn add @jhead/vapor`

## Example

In the example below, we start with npmjs.com and load our initial page at
`/search?q=debug`, searching for a 'debug' package. From there, we extract
zero or more links to the package pages, grabbing only the package name
from the URL, to demonstrate some string parsing techniques. For each of the
packages, we fetch the package page on the npm website and extract the
associated GitHub repository URL.

**YAML Declaration**

```yaml
# A name, anything you want
name: npm-example
# Base job URL. Flow URLs will be appended
url: https://www.npmjs.com
# Number of concurrent requests with 'foreach' (see below)
concurrency: 2
# Delay between requests (helps with rate limiting)
delay: 100
# Defines our steps or 'flows' as a list of flow objects
flows:
  # Another name
- name: Search
  # Request definition
  request:
    # Relative or absolute URL
    url: /search?q=debug
    # HTTP request method
    method: get
    # Also supports post and put with form fields...
    # method: post
    # form:
    #   key: value
  # Defines how to select, extract, and transform data from the page HTML
  extract:
    # Each key here corresponds to a key in the result object
    # Uses the 'surgeon' package underneath to extract and transform
    # Each key is exposed to subsequent flows
    packages:
    # Selects some elements with a CSS selector
    - select "[class*=package-list-item] a[href*=package]" {0,}
    # Grabs the href property from each element
    - read property href
    # Splits at / and returns the third piece
    - split / 2
# Our second flow, runs once per item in 'packages' from previous flow
- name: Get package repos
  # Available from previous flow
  foreach: packages
  request:
    # Templated URL supports exposed values from previous flow, as well as
    # the 'foreach' property.
    url: "/package/{foreach}"
    method: get
  extract:
    repo:
    - select "a[class*=sidebarLink]" {0,}[0]
    - read property href
    - trim
```

**JS Usage**

```javascript
import vapor from '@jhead/vapor'

vapor
  .file('npm-example', './npm-example.yaml')
  .then(console.log)
```

**Output**
```javascript
[
  {
    packages: [
      'debug',
      'babel-messages',
      // ...
    ]
  },
  {
    debug: {
      repo: 'https://github.com/visionmedia/debug'
    },
    'babel-messages': {
      repo: 'https://babeljs.io/'
    },
    // ...
 }
]
```
npm package: @jhecht/eslint-plugin
Description: Personally preferred eslint config with a customn rule
Author: jhechtf
Latest version: 1.0.1

# Core Fabrications ESLint Plugin

## Custom Rules

This plugin currently provides the following custom rules

1. [@jhecht/max-static-destructure-depth](#max-static-destructure-depth)
2. [@jhecht/prefer-destructuring](#prefer-destructuring)

### max-static-destructure-depth

This rule applies in contexts where you are utilizing destructuring, but you only wish to directly destructure a static length into a property.
The most common use case for this would be pulling variables from `process.env`, where the normal destructuring rules try to enforce a code style that honestly doesn't make a lot of sense.

```js
// example using ESLint's default destructuring rule

const { NODE_ENV, OTHER_VARIABLE } = process.env; // Will complain about this, suggesting it to be rewritten as
const {
  env: { NODE_ENV, OTHER_VARIABLE },
} = process; // Why?
```

`max-static-destructure-depth` takes an integer argument to determine how far down a developer should be allowed to destructure statically. It defaults to 2 levels, meaning with `max-static-destructure-depth` being enforced, our previous code

```js
const { NODE_ENV, OTHER_VARIABLE } = process.env; // a-ok

const { foo, bar } = some.nested.variable; // not okay, as we nest 3 levels here.
```

To change the maximum in your own ESLint config, simply add a line to your `rules` that looks like this

```json
"rules": {
  "@jhecht/max-static-destructure-depth": ["error", 4]
}
```

### prefer-destructuring

This is a carbon-copy of the ESLint [prefer-destructuring](https://eslint.org/docs/rules/prefer-destructuring) rule, modified not to output "errors" caused by our custom destructuring rule. Please see the link for any configuration documentation.

## Provided Configs

This plugin currently provides the following custom configs. **Note** Unless otherwise stated, these extend the `eslint:recommended` configuration.

1. plugin:@jhecht/recommended

### @jhecht/recommended

The recommended rule profile has the following values

```js
// We use semi colons
semi: ['error', 'always'],
// We use single quotes whenever possible, but allow double quotes to avoid escapes.
quotes: ['error', 'single', { avoidEscape: true, allowTemplateLiterals: true }],
// Destructuring is a helpful pattern
'prefer-destructuring': ['error', { array: true, object: true }, { enforceForRenamedProperties: true }],
// Curly bracers for multi-line or nested statements
curly: ['error', 'multi-or-nest'],
'arrow-body-style': ['error', 'as-needed'],
// If we don't need arrow parenthesis, we won't add them
'arrow-parens': ['error', 'as-needed'],
'@jhecht/max-static-destructure-depth': ['error', 2]
'@jhecht/prefer-destructuring': ['error', { array: true, object: true }, { enforceForRenamedProperties: true }]
```

## License

The license of this project is MIT. You are free to use and modify it to suit your needs so long as you understand that Core Fabrications is in no way offering support to your project.
npm package: @jhelektrohub/nest-js-mailer
Description: NestJS - a mailer module (@mailer)
Author: Nest Modules TM
Latest version: 3.1.0

<p align="center">
  <a href="http://nestjs.com/" target="blank">
    <img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" />
  </a>
</p>

<p align="center">
  A mailer module for Nest framework (node.js) using <a href="https://nodemailer.com/">Nodemailer</a> library
</p>

<p align="center">
  <a href="https://www.npmjs.com/org/nestjs-modules"><img src="https://img.shields.io/npm/v/@nestjs-modules/mailer.svg" alt="NPM Version" /></a>
  <a href="https://www.npmjs.com/org/nestjs-modules"><img src="https://img.shields.io/npm/l/@nestjs-modules/mailer.svg" alt="Package License" /></a>
  <a href="https://www.npmjs.com/org/nestjs-modules"><img src="https://img.shields.io/npm/dm/@nestjs-modules/mailer.svg" alt="NPM Downloads" /></a>
  <a href="https://opencollective.com/nest-modules#sponsor"  target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
</p>

### Installation

```sh
npm install --save @nestjs-modules/mailer nodemailer
npm install --save-dev @types/nodemailer
#or
yarn add @nestjs-modules/mailer nodemailer
yarn add -D @types/nodemailer
```

**Hint:** handlebars and pug is an optional dependency, if you want to use the template, you must install it.

#### with npm
```sh
npm install --save handlebars
#or
npm install --save pug
#or
npm install --save ejs
#or
npm install --save mjml
```

#### with yarn
```sh
yarn add handlebars
#or
yarn add pug
#or
yarn add ejs
#or
yarn add mjml
```

### Documentation

you can find all the documentation [here](https://nest-modules.github.io/mailer/) for the email module

### Starter kit

- [Sending email-template with outlook](https://github.com/yanarp/nestjs-mailer) - Starter kit, nestjs mailer implementation on outlook smtp with email-template

### Contributing

* [Cristiam Diaz](https://github.com/cdiaz)
* [Eduardo Leal](https://github.com/eduardoleal)
* [Juan Echeverry](https://github.com/juandav)
* [Pat McGowan](https://github.com/p-mcgowan)
* [Paweł Partyka](https://github.com/partyka95)
* [Wasutan Kitijerapat](https://github.com/kitimark)
* [Alexandre Titeux](https://github.com/GFoniX)

### License

MIT
npm package: @jhelom/react-mui-message-dialog
Description: `react-mui-message-dialog` is a simple and flexible message dialog component library for React + MUI (Material-UI) environments.
Author: jhelom
Latest version: 1.0.7

# react-mui-message-dialog

# Overview

`react-mui-message-dialog` is a simple and flexible message dialog component library for React + MUI (Material-UI) environments.

- Unified UI based on MUI's Dialog component
- Promise-based API for easy alert, confirm, and error dialogs
- Global dialog management via Context Provider
- TypeScript support

Ideal for business applications and admin dashboards where you need to display messages or confirmations to users.

# Install

```bash
npm i @jhelom/react-mui-message-dialog
```

# Usage

Wrap your application with `MessageDialogProvider` to enable global message dialog functionality. This provider manages the dialog state and allows you to use the `useMessageDialog` hook anywhere in your component tree.

```tsx
import { MessageDialogProvider } from "@jhelom/react-mui-message-dialog";

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <MessageDialogProvider>
      <App />
    </MessageDialogProvider>
  </StrictMode>
);
```

After wrapping your app with `MessageDialogProvider`, you can use the `useMessageDialog` hook in any component. This hook provides functions to show alert, confirm, and error dialogs as Promises, making it easy to handle user interactions asynchronously.

```tsx
import { useMessageDialog } from "@jhelom/react-mui-message-dialog";

const messageDialog = useMessageDialog();

// Show an alert dialog
await messageDialog.alert("Alert Message");

// Show a confirm dialog
const result = await messageDialog.confirm("Confirm Message");
if (result) {
  // OK
} else {
  // Cancel
}

// Show an error dialog
await messageDialog.error("Error Message");
```

## Alert

![](docs/attached/alert.jpg)

## Confirm

![](docs/attached/confirm.jpg)

## Error

![](docs/attached/error.jpg)

# Localize Text

You can localize the dialog texts (button labels and titles) by passing a `MessageDialogSettings` object to the `settings` prop of `MessageDialogProvider`. Set each property to the desired language string to customize the dialog UI for your users.

```tsx
import {
  MessageDialogProvider,
  MessageDialogSettings,
} from "@jhelom/react-mui-message-dialog";

const messageDialogSettings = {
  okText: "OK",
  cancelText: "Cancel",
  alertTitle: "Alert",
  confirmTitle: "Confirm",
  errorTitle: "Error",
} as MessageDialogSettings;

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <MessageDialogProvider settings={messageDialogSettings}>
      <App />
    </MessageDialogProvider>
  </StrictMode>
);
```
npm package: @jhenbertnpm/db
Description: Instantiating new Prisma instance
Author: Jhenbert
Latest version: 1.0.4

# Prisma Client Instance

- Create a new intance of Prisma Client.
- If an instance of Prisma is already running, one should not create another instance.

## Usage

```sh

import {db} from "@jhenbertnpm/db"

```
npm package: @jhenbertnpm/use-fetch
Description: Custom hooks in Typescript to fetch data from API or database using any method returning a promise.
Author: Jhenbert
Latest version: 2.0.6

# Quickstart

Using the custom hook

```bash

const { data, isLoaded, error } = useFetch<DataType[]>({
    fetchFn: async () => {
      const response = await fetch(url);
      const data: DataType[] = await response.json();
      return data;
    },
    initialData: [],
  });

```

In the example above, I use the [fetch() API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). You can also use [Axios](https://axios-http.com/docs/intro) or any other [promise-based](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) http client.
npm package: @jhenderson/wdio-sync
Description: A WebdriverIO plugin. Helper module to run WebdriverIO commands synchronously
Author: Christian Bromann
Latest version: 5.7.13

WebdriverIO Sync
================

> A WebdriverIO plugin. Helper module to run WebdriverIO commands synchronously

A WebdriverIO plugin. Helper module to run WebdriverIO commands synchronously. It overwrites global functions depending on the test framework (e.g. for Mocha describe and it) and uses Fibers to make commands of WebdriverIO using the wdio testrunner synchronous. This package is consumed by all wdio framework adapters.
npm package: @jhermsmeier/control
Description: Minimal, speedy test framework
Author: Jonas Hermsmeier
Latest version: 2.0.4

# Control
[![npm](https://img.shields.io/npm/v/@jhermsmeier/control.svg?style=flat-square)](https://npmjs.com/package/@jhermsmeier/control)
[![npm license](https://img.shields.io/npm/l/@jhermsmeier/control.svg?style=flat-square)](https://npmjs.com/package/@jhermsmeier/control)
[![npm downloads](https://img.shields.io/npm/dm/@jhermsmeier/control.svg?style=flat-square)](https://npmjs.com/package/@jhermsmeier/control)

## Install via [npm](https://npmjs.com)

```sh
$ npm install --save-dev @jhermsmeier/control
```